[linux-ileri] Re: printk mesajlari

---------

From: Murat Koc (murat.koc@frontsite.com.tr)
Date: Tue 24 Feb 2004 - 09:57:24 EST

  • Next message: Bora Şahin: "[linux-ileri] Re: printk mesajlari"

    > 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-----
    

  • Next message: Bora Şahin: "[linux-ileri] Re: printk mesajlari"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.