Linux çekirdeğinde çok yeniyim. Ve koddaki mevcut gürültüyü temizlemek için seyrek aracı kullanıyorum. Ben bu makroları karşılaştı:linux/compiler.h dosyalarında tanımlanan ön işlemci makrolarının amacı nedir?
# define __user __attribute__((noderef, address_space(1)))
# define __kernel __attribute__((address_space(0)))
# define __safe __attribute__((safe))
# define __force __attribute__((force))
# define __nocast __attribute__((nocast))
# define __iomem __attribute__((noderef, address_space(2)))
# define __must_hold(x) __attribute__((context(x,1,1)))
# define __acquires(x) __attribute__((context(x,0,1)))
# define __releases(x) __attribute__((context(x,1,0)))
# define __acquire(x) __context__(x,1)
# define __release(x) __context__(x,-1)
# define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0)
# define __percpu __attribute__((noderef, address_space(3)))
Ve şimdi bilmek istiyorum: onlar hataları/uyarı bildirmek için seyrek tarafından nasıl kullanıldıkları?
Sorularım:
- Onların derleyici ve uyarıları bildirmek için seyrek nasıl yardımcı ayrıntıları istiyorum.
- Bunlar nedir address_space (x)içerik (X, x, x) ve orada mı?
- nedir __nocast amacı, __force, __user, __safe?
Makaleleri paylaştığınız için teşekkür ederiz. Ancak yine de, bu problemi bildirmek için nasıl seyrek olarak yardımcı olabileceğine dair cevabı bulamıyorum. Hala'address_space (num) 'aslında uyarının çözülmesine ve bildirilmesine nasıl yardımcı olduğunu anlamıyorum. Benzer şekilde bağlam (x, x, x). –