Memory Barrier
static inline void barrier(void) { asm volatile("": : : "memory"); }
格式 : __asm__(組合語言:輸出:輸入:修飾詞") __volatile__ 代表這行指令(這些組合語言),不和前面的指令一起最佳化。 "memory" 告訴GCC這些組合語言會改變所有的RAM的資料。 因為沒組合語言,又告訴gcc所有RAM的內容都改變,所以這個memory barrier的效用,會讓這行之前被gcc所cache到暫存器的資料通通寫回RAM裡面,也告訴gcc會讓之後讀取RAM的資料,必須再從RAM裡讀取出來。
沒有留言:
張貼留言