MIPSマシンでNUMACTLをデバッグしています。numa_police_memory()APIには、次のものがあります。
void numa_police_memory(void *mem, size_t size)
{
int pagesize = numa_pagesize_int();
unsigned long i;
for (i = 0; i < size; i += pagesize)
asm volatile("" :: "r" (((volatile unsigned char *)mem)[i]));
}
"asm volatile(" "::" r "(((volatile unsigned char *)mem)[i]));"のようです。以前のmmapによって適用されたすべてのメモリが特定の物理メモリに割り当てられるように、VMの読み取りに使用されます。しかし、このasmコードはどのように機能しますか?アセンブリ言語が読めません!最初の二重引用符が空なのはなぜですか?
ありがとう