linuxÄÚºËprintkµ÷ÊÔ
linuxÄÚºËprintkµ÷ÊÔ£¨ÕªÂ¼¡¶Linux°²È«Ìåϵ·ÖÎöÓë±à³Ì¡·£©
linuxÄÚºËprintkµ÷ÊÔ£¨ÕªÂ¼¡¶Linux°²È«Ìåϵ·ÖÎöÓë±à³Ì¡·£©
1 printk¼°¿ØÖÆÌ¨µÄÈÕÖ¾¼¶±ð
º¯ÊýprintkµÄʹÓ÷½·¨ºÍprintfÏàËÆ£¬ÓÃÓÚÄں˴òÓ¡ÏûÏ¢¡£printk¸ù¾ÝÈÕÖ¾¼¶±ð£¨loglevel£©¶ÔÏûÏ¢½øÐзÖÀà¡£
ÈÕÖ¾¼¶±ðÓú궨Ò壬ÈÕÖ¾¼¶±ðºêÕ¹¿ªÎªÒ»¸ö×Ö·û´®£¬ÔÚ±àÒëʱÓÉÔ¤´¦ÀíÆ÷½«ËüºÍÏûÏ¢Îı¾Æ´½Ó³ÉÒ»¸ö×Ö·û´®£¬Òò´Ëprintk º¯ÊýÖÐÈÕÖ¾¼¶±ðºêºÍ¸ñʽ×Ö·û´®¼ä²»ÄÜÓжººÅ¡£
ÏÂÃæÊÇÁ½¸öprintkµÄÀý×Ó£¬Ò»¸öÓÃÓÚ´òÓ¡µ÷ÊÔÐÅÏ¢£¬ÁíÒ»¸öÓÃÓÚ´òÓ¡ÁÙ½çÌõ¼þÐÅÏ¢¡£
printk(KERN_DEBUG "Here I am: %s:%i\n", _ _FILE_ _, _ _LINE_ _);
printk(KERN_CRIT "I'm trashed; giving up on %p\n", ptr);
printkµÄÈÕÖ¾¼¶±ð¶¨ÒåÈçÏ£¨ÔÚlinux26/includelinux/kernel.hÖУ©£º
#defineKERN_EMERG"<0>"/*½ô¼±Ê¼þÏûÏ¢£¬ÏµÍ³±ÀÀ£Ö®Ç°Ìáʾ£¬±íʾϵͳ²»¿ÉÓÃ*/
#defineKERN_ALERT"<1>"/*±¨¸æÏûÏ¢£¬±íʾ±ØÐëÁ¢¼´²ÉÈ¡´ëÊ©*/
#defineKERN_CRIT"<2>"/*ÁÙ½çÌõ¼þ£¬Í¨³£Éæ¼°ÑÏÖØµÄÓ²¼þ»òÈí¼þ²Ù×÷ʧ°Ü*/
#defineKERN_ERR"<3>"/*´íÎóÌõ¼þ£¬Çý¶¯³ÌÐò³£ÓÃKERN_ERRÀ´±¨¸æÓ²¼þµÄ´íÎó*/
#defineKERN_WARNING"<4>"/*¾¯¸æÌõ¼þ£¬¶Ô¿ÉÄܳöÏÖÎÊÌâµÄÇé¿ö½øÐо¯¸æ*/
#defineKERN_NOTICE"<5>"/*Õý³£µ«ÓÖÖØÒªµÄÌõ¼þ£¬ÓÃÓÚÌáÐÑ¡£³£ÓÃÓÚÓ밲ȫÏà¹ØµÄÏûÏ¢*/
#defineKERN_INFO"<6>"/*ÌáʾÐÅÏ¢£¬ÈçÇý¶¯³ÌÐòÆô¶¯Ê±£¬´òÓ¡Ó²¼þÐÅÏ¢*/
#defineKERN_DEBUG"<7>"/*µ÷ÊÔ¼¶±ðµÄÏûÏ¢*/
extern int console_printk[];
#define console_loglevel ¡¡(console_printk[0])
#define default_message_loglevel¡¡ (console_printk[1])
#define minimum_console_loglevel¡¡ (console_printk[2])
#define default_console_loglevel¡¡ (console_printk[3])
ÈÕÖ¾¼¶±ðµÄ·¶Î§ÊÇ0¡«7£¬Ã»ÓÐÖ¸¶¨ÈÕÖ¾¼¶±ðµÄprintkÓï¾äĬÈϲÉÓõļ¶±ðÊÇ DEFAULT_ MESSAGE_LOGLEVEL£¬Æä¶¨ÒåÁгöÈçÏ£¨ÔÚlinux26/kernel/printk.cÖУ©£º
/*ûÓж¨ÒåÈÕÖ¾¼¶±ðµÄprintkʹÓÃÏÂÃæµÄĬÈϼ¶±ð*/
#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING ¾¯¸æÌõ¼þ*/
Äں˿ɰÑÏûÏ¢´òÓ¡µ½µ±Ç°¿ØÖÆÌ¨ÉÏ£¬¿ÉÒÔÖ¸¶¨¿ØÖÆÌ¨Îª×Ö·ûģʽµÄÖÕ¶Ë»ò´òÓ¡»úµÈ¡£Ä¬ÈÏÇé¿öÏ£¬“¿ØÖÆÌ¨”¾ÍÊǵ±Ç°µÄÐéÄâÖÕ¶Ë¡£
ΪÁ˸üºÃµØ¿ØÖƲ»Í¬¼¶±ðµÄÐÅÏ¢ÏÔʾÔÚ¿ØÖÆÌ¨ÉÏ£¬ÄÚºËÉèÖÃÁË¿ØÖÆÌ¨µÄÈÕÖ¾¼¶±ðconsole_loglevel¡£printkÈÕÖ¾¼¶±ðµÄ×÷ÓÃ
Ïà¹ØÎĵµ£º
¡¡ ת×Ô http://tech.sina.com.cn/s/2004-10-19/1115443045.shtml
×÷ΪLinuxϵijÌÐò¿ª·¢ÈËÔ±£¬´ó¼ÒÒ»¶¨¶¼Óöµ½¹ýMakefile£¬ÓÃmakeÃüÁîÀ´±àÒë×Ô¼ºÐ´µÄ³ÌÐòȷʵÊǺܷ½±ã¡£Ò»°ãÇé¿öÏ£¬´ó¼Ò¶¼ÊÇÊÖ¹¤Ð´Ò»¸ö¼òµ¥Makefile£¬Èç¹ûÒªÏëд³öÒ»¸ö·ûºÏ×ÔÓÉÈ ......
֮ǰװÍêwindowsºó¾Í·¢ÏÖlinuxµÄÆô¶¯ÏîÕÒ²»µ½ÁË£¬¿ªÊ¼Ê±£¬ÊµÔÚÊÇÎÞÄΰ¡£¡½á¹ûÖ»ºÃ֨װlinux£¡£¡ºÜ²Ë°É£¡£¡
ÏÖÔÚÖÕÓÚÖªµÀÁË£¬ÆäʵÊÇ¿ÉÒԺܼòµ¥µØ¾Í°ÑlinuxÕÒ»ØÀ´µÄ£¡
Õâ¸ö·½·¨Ö»ÏÞÓÚÓð²×°Å̵ÄÓû§£¡£¡£¡£¡
×°Èëlinux°²×°ÅÌ£¬ÒÔ¹âÇýÆô¶¯£¬½ ......
×¢£ºÇëÔÊÐíÎÒ×ªÔØÄúµÄ¼Ñ×÷
ÔÚwindowsÉÏ¿ª·¢Äܹ»ÔÚlinuxÉϱàÒëµÄC´úÂ룬ÎÒ²éÁ˲éÓÐ2¸öÈí¼þ¿ÉÒÔʵÏÖ£¬Ò»¸öÊÇCygwin£¬Ò»¸öÊÇmingw¡£ÆäÖÐcygwinÊÇÒ»¸öwindowsÉÏlinux»·¾³µÄÄ£Ä⹤¾ß£¬ËûÌṩÁ˺ܶàlinux¹¤¾ßµÄwindowsʵÏÖ°æ±¾£¬ÀýÈçvi£¬emacsµÈµÈ£¬µ±È»Ò²°üÀ¨GCC¡£Ê¹ÓÃmingwµÄºÃ´¦¾ÍÊDZàÒë¹ýµÄ³ÌÐòÖ±½Ó¾Í¿ÉÒÔÅÜÁË£¬¶øcygwinÔòÐè ......
1.fork
´´½¨Ò»¸öнø³Ì
2.clone
°´Ö¸¶¨Ìõ¼þ´´½¨×Ó½ø³Ì
3.execve
ÔËÐпÉÖ´ÐÐÎļþ
4.exit   ......