linux-011中位图操作函数(申请释放节点,申请释放block)解析

xiaoxiao2021-02-28  89

/*把addr开始一块block地址清0*/ #define clear_block(addr) \ __asm__("cld\n\t" \ "rep\n\t" \ "stosl" \ ::"a" (0),"c" (BLOCK_SIZE/4),"D" ((long) (addr)):"cx","di") /*把addr中偏移为nr的位置1*/ #define set_bit(nr,addr) ({\ register int res __asm__("ax"); \ __asm__("btsl %2,%3\n\tsetb %%al":"=a" (res):"0" (0),"r" (nr),"m" (*(addr))); \ res;}) /*把addr中偏移位nr的位清0*/ #define clear_bit(nr,addr) ({\ register int res __asm__("ax"); \ __asm__("btrl %2,%3\n\tsetnb %%al":"=a" (res):"0" (0),"r" (nr),"m" (*(addr))); \ res;}) /*把addr中第一个为0的位偏移返回*/ #define find_first_zero(addr) ({ \ int __res; \ __asm__("cld\n" \ "1:\tlodsl\n\t" \ "notl %
转载请注明原文地址: https://www.6miu.com/read-35641.html

最新回复(0)