[linux-ileri] Re: printk mesajlari

---------

From: Murat Koc (murat.koc@frontsite.com.tr)
Date: Wed 03 Mar 2004 - 01:41:06 EST

  • Next message: Murat Koc: "[linux-ileri] Re: Kernel BUG at journal.c:406!"

    > SLmLar Bulent,
    >

    Merhaba Bora ve liste sakinleri,

    > Yukarıdaki ifade tam olarak ne işe yarıyor yani "(int)0"dan farkını anlayamadım(Sonuçta ikincisi de
    > herhangi bir ASM kodu üretmiyor. Tabii warning'leri kapatıyor olabilir, bilemiycem) ama eğer
    > açılımını öğrenmek istiyorsan şöyle bir şey:
    >
    > printk("Den\n") == ((0), (int)0)
    > printk("Den = %d\n", 25) == ((0, 25) (int)0)
    >
    > gcc'ye -E switch'ini verirsen dosyanın derlenmeden önceki preprocess edilmiş halini alabilirsin...
    >

    Bir önceki mailimde neden olduğunu yazmıştım. Yukarıdaki iki şekil de
    olayın yine de anlaşılmamasını sağlayacaktır. Çünkü bir fark
    göremeyeceksiniz.

    GCC nin nerede ise bütün özellikleri ile kullanıldığı alan biliyorsunuz
    KERNEL. Dolayısı ile bu tür bazı yazım tarzları için kernel programlama
    ile ilgilenmiş olmak gerekiyor. Bundan dolayı user space programlarda
    karşılaşmayacağınız (aslında çok sık karşılaşmayacğınız demek lazım
    sanırım) bu tür ifadelerin anlaşılması problem olabilir.

    Bütün olay printk nın bir takım sınıflandırılmalar yapılmasına izin
    vermesi ve bunun için driverlar içinde DEBUG macrolarının tanımlanması.
    Bizim yaptığımız ise bu macrolardaki ifadeler ile uyum sağlamak ve olası
    problemleri önceden halletmemizi sağlamak.

    > BS> belki anliyabilirim diye heveslendim ve soyle birsey yaptim
    >
    > BS> #define printk (format, args...) ((0,##args), printf(format,args))
    > BS> #define printk2(format, args...) printf(format,args)
    >
    > Yukarıdakiler hatalı. Şöyle olmalı:
    >
    > #define printk (format, args...) ((0 , ##args), printf(format , ##args))
    > #define printk2(format, args...) printf(format , ##args)
    >

    Böyle dahi olsa yine hatalı :) ve birşey anlaşılmaz. Bakın burada
    tanımlamaları yaparken printk için printf yapıyorsunuz. Oysaki bizim
    tanımlamamız printk için geçerli. Çünkü bir takım değerler atamamıza
    printk izin veriyor printf değil.

    Dolayısı ile bu tanımlamalar ile bir yere varılamaz.

    Umarım biraz daha açıklayıcı olabilmişimdir.

    -- 
     __________
    |          |
    |          |  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)
    iD8DBQBARX4CyHJSQxPy7GoRAiD4AJ9mbwjj+cez5cgS6gIfE9cwDMi8DgCgxK5U
    vkn4o9S9ksvHrvRQ+WryBJs=
    =eG4O
    -----END PGP SIGNATURE-----
    

  • Next message: Murat Koc: "[linux-ileri] Re: Kernel BUG at journal.c:406!"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.