From: Murat Koc (murat.koc@frontsite.com.tr)
Date: Tue 24 Feb 2004 - 09:57:24 EST
> Murat merhaba,
>
>
Selam,
> #define printk(format, args...) ((0,##args), int(0))
>
> kernel'da benzer ifadeleri s1k s1k gormeme ragmen anliyabilmis degilim,
> bu ne demektir ? :)
>
:)) anlatayım.
printk nın değişik bazı özellikleri vardır. Bunlardan bir tanesi çeşitli
loglevel lara göre veya önceliklere göre mesajları sınıflayabilmeni
sağlayabilmesidir. Bu ise özellikle driverlarda debug işlemlerinde
kullanılır.
bazı driver larda coder olan erkişi "burada olanları ben belirteyim"
gibisinden bir yaklaşım sergiler ve çeşitli debug tanımlamaları
yerleştirir. Bunları da printk nın özelliğine makro olarak yapar. Misal
usbaduio.c
#ifdef HW_CONST_DEBUG
#define hwc_debug(fmt, args...) printk(KERN_DEBUG fmt, ##args)
#else
#define hwc_debug(fmt, args...) /**/
#endif
şimdi sanırım anlamışsındır. esas olarak neden bizim printk ı
kaldırırken sadece (int)0 değilde ((0,##args), (int)0) yaptığımızı.
Yani olay sadece format konusunda herhangi bir side-effect olmaması için
bu şekilde yapılıyor. Senin gördüğün benzer ifadeler ise sadece printk
için debugging tanımlamaları.
printk.c de printk() fonksiyonunu incelersen bahsettiğim loglevel
tanımlarını görebilirsin.
> Birde vaktin varsa __attribute__ icin kisa bir aciklama yaparsan sevinirim..
gcc de fonksiyonlarına onlarla ilgili olarak belirli tanımlamalar
yapabilirsin. Bunu yapmak için ise kullanacağın kelime __attribute__ .
kullanabileceklerin ise;
noreturn, noinline, always_inline, pure, const, nothrow, format,
format_arg, no_instrument_function, section, constructor, destructor,
used, unused, deprecated, weak, malloc, alias ve nonnull
bunlar bütün mimariler için geçerli olanlar fakat mimariden mimariye
çeşitli farklı attibute lar kullanılabilir.
bizim kullandığımız unused attibute ı ise GCC e bu fonksiyonun büyük
ihtimalle kullanılmayacağını belirtir. Bu nedenle GCC bu şekilde
attribute tanımlanmış fonksiyonlar için warning üretmez.
http://gcc.gnu.org/onlinedocs/gcc-3.3.3/gcc/Function-Attributes.html#Function%20Attributes
Umarım yardımcı olabilmişimdir.
Kolay gelsin ...
PS: Sanırım bu thread linux-ileri listesinde nelerin konuşulması
gerektiğine iyi bir örnek olmuştur?
-- __________ | | | | Murat Koc | | Manager & IT Consultant | FRONT | |==========| FrontSITE Bilgi Teknolojisi A.S. |_____SITE_| http://www.frontsite.com.tr/ -- Attached file included as plaintext by Ecartis -- -- File: signature.asc -- Desc: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBAO2ZTyHJSQxPy7GoRAqpvAKC/EwmbohFtVN/ZNy6MyvTIwO49hQCg6ASM WYpYDT9kLHR9Rv/tKHFG6xE= =zfZd -----END PGP SIGNATURE-----