位操作

status |=  flags  /*设置标记*/

status &= ~flags /*清除标记*/

status & flags    /*判断标记*/

 

循环:

do {} while(0) 方便从代码中退出( break; 不需要使用 goto)

for(;;)  死循环;

 

gcc 扩展

struct file_operator file_op = {.open = my_open}; 

.open 是这种在 struct中部分初始化,可以省去大对象的初始化的麻烦。

__attribute__(packed) 帮助设置对齐为0,这样可以减少空间浪费,或满足 cacheline 的大小要求。

 

原子操作

 

++jiffiers; /*可能是多个指令来保证 jiffiers 递增, movl (jiffiers), eax,  inc eax, mov eax, (jiffiers)*/

++(*(unsigned long *)(&jiffiers)); /* gcc 会编译成一个原子操作的指令来完成递增,

比如 inc (jifffiers) */

相关文章:

  • 2021-09-26
  • 2022-12-23
  • 2021-08-14
  • 2021-11-24
  • 2022-01-02
  • 2022-01-14
  • 2021-08-31
猜你喜欢
  • 2021-06-06
  • 2022-12-23
  • 2022-12-23
  • 2021-09-23
  • 2021-07-21
  • 2022-02-19
  • 2022-02-16
相关资源
相似解决方案