LinuxÏÂtty¡¢consule¡¢´®¿ÚÖ®¼äµÄ¹ØÏµÊÕ¼¯
1¡¢LINUXÏÂTTY¡¢CONSOLE¡¢´®¿ÚÖ®¼äÊÇÔõÑùµÄ²ã´Î¹ØÏµ£¿¾ßÌåµÄº¯Êý½Ó¿ÚÊÇÔõÑùµÄ£¿´®¿ÚÊÇÈçºÎ±»µ÷Óõģ¿
ttyºÍconsoleÕâЩ¸ÅÄîÖ÷ÒªÊÇһЩÐéÄâÉ豸µÄ¸ÅÄ¶ø´®¿Ú¸ü¶àµÄÊÇÖ¸Ò»¸öÕæÕýµÄÉ豸Çý¶¯¡£Ttyʵ¼ÊÊÇÒ»ÀàÖÕ¶ËI/OÉ豸µÄ³éÏó£¬Ëüʵ¼ÊÉϸü¶àµÄÊÇÒ»¸ö¹ÜÀíµÄ¸ÅÄĿµÄÊÇÏòÉϲãµÄVFSÌṩһ¸öͳһµÄ½Ó¿Ú¡£Í¨¹ýfile_operations½á¹¹ÖеÄtty_ioctl¿ÉÒÔ¶ÔÆä½øÐÐÅäÖᣲétty_driver£¬Ä㽫µÃµ½n¸ö½á¹û£¬Êµ¼Ê¶¼ÊÇÏà¹ØÐ¾Æ¬µÄÇý¶¯¡£Òò´Ë£¬¿ÉÒԵõ½µÄ½áÂÛÊÇ£ºÃ¿¸öÃèÊöttyÉ豸µÄtty_structÔÚ³õʼ»¯Ê±±ØÈ»¹Ò½ÓÁËij¸ö¾ßÌåоƬµÄ×Ö·ûÉ豸Çý¶¯£¨²»Ò»¶¨ÊÇ×Ö·ûÉ豸£©£¬¿ÉÒÔÊǺܶ࣬°üÀ¨ÏÔ¿¨»ò´®¿Úchip¡£
¶øconsoleÊÇÒ»¸ö»º³åµÄ¸ÅÄËüµÄÄ¿µÄÓÐÒ»µãÀàËÆÓÚtty¡£Êµ¼ÊÉÏconsole²»½öºÍttyÁ¬ÔÚÒ»Æð£¬»¹ºÍframebufferÁ¬ÔÚÒ»Æð£¬¾ßÌåµÄÔÒò¿´ÏÂÃæµÄ¼üÅ̵ÄÖжϴ¦Àí¹ý³Ì¡£TtyµÄÒ»¸ö×Ó¼¯ÐèҪʹÓÃconsole(µäÐ͵ÄÈçÖ÷É豸ºÅ4£¬´ÎÉ豸ºÅ1¨D64)£¬µ«ÊÇҪעÒâµÄÊÇûÓÐconsoleµÄttyÊÇ´æÔڵġ£¶ø´®¿ÚÔòÖ¸µÄÊÇtty_driver¡£ ¾Ù¸öµäÐ͵ÄÀý×Ó£¬·ÖÎöһϼüÅ̵ÄÖжϴ¦Àí¹ý³Ì£º
keyboard_interrupt¨D>handle_kbd_event¨D>handle_keyboard_event¨D>handle_scancode
void handle_scancode(unsigned char scancode, int down)
{
……..
tty = ttytab? ttytab[fg_console]: NULL;
if (tty && (!tty->driver_data)) {
……………
tty = NULL;
}
………….
schedule_console_callback();
}
Õâ¶Î´úÂëÖеÄÁ½¸öµØ·½ºÜÖµµÃ×¢Ò⣬Ҳ¾ÍÊdzýÁË»ñµÃttyÍ⣨ͨ¹ýÈ«¾ÖÁ¿tty¼Ç¼£©£¬»¹½øÐÐÁËconsole»ØÏÔschedule_console_callback¡£TtyºÍconsoleµÄ¹ØÏµÔÚ´ËÒѾºÜÃ÷ÁË£¡£¡£¡
2¡¢printkº¯ÊýÊǰÑÐÅÏ¢·¢Ë͵½¿ØÖÆÌ¨Éϰɣ¿ÈçºÎÈÃPRINTK°ÑÐÅϢͨ¹ý´®¿ÚËͳö£¿»òÕß˵ϵͳÔÚʲôµØ·½À´¾ö¶¨Êǽ«ÐÅÏ¢Ë͵½ÏÔʾÆ÷»¹ÊÇ´®¿Ú£¿ ¾ßÌå¿´Ò»ÏÂprintkº¯ÊýµÄʵÏÖ¾ÍÖªµÀÁË£¬printk²»Ò»¶¨Êǽ«ÐÅÏ¢Íù¿ØÖÆÌ¨ÉÏÊä³ö£¬ÉèÖÃkernelµÄÆô¶¯²ÎÊý¿ÉÄÜ¿ÉÒÔ´ïµ½½«ÐÅÏ¢Ë͵½ÏÔʾÆ÷µÄ
Ïà¹ØÎĵµ£º
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->
Ëùν“Ôıø”¾ÍÊǼìÔIJ¿¶ÓµÄÒâ˼¡£
Linux
´ó¾ü£¨·¢Ðа棩¿Éν“É¢±øÓÎÓ”£¬Ì¸ºÎ´óÔıø£¿´ËÑÔ²îÒÓ¡£
......
ºÜ¾ÃûÓÐд¼¼Êõ²©ÎÄÁË£¬´ÓÕâÀ↑ʼÎÒµÄÑо¿ÉúÉúÑÄ£¬×ªÑÛ¾ÍÒªÔÚÖ°³¡ÉÏÑø¼Òºý¿Ú£¬Éú»îÕæµÄ²»ÈÝÒ×£¬ÐҺû¹Óм¼ÊõÏà°éΪÎé¡£
ÓÉÓÚ¹¤×÷µÄ¹ØÏµ£¬ÖÕÓÚ½Ó´¥µ½linuxÍøÂçºÍkernelµÄ±à³Ì£¬×ÜÌåÀ´Ëµ×ÜÊÇÒ»¸öºÃµÄÆõ»ú¡£ÈÃÎÒÄܹ»ÉîÈë²Ù×÷ϵͳÄںˡ£×ö¹ýÒ»¶Îʱ¼äµÄÓû§³ÌÐòµÄ¿ª·¢£¬×ÜÊÇÔÚWindowsƽ̨ÉÏ£¬ÖÕÓÚÓлú»áÔÚlinuxÉÏ×öµã¶«Î÷£¬»¹Ê ......
ǶÈëʽϵͳÓëͨÓÃPC»ú²»Í¬£¬Ò»°ãûÓÐÓ²ÅÌÕâÑùµÄ´æ´¢É豸¶øÊÇʹÓÃFlashÉÁ´æÐ¾Æ¬¡¢Ð¡ÐÍÉÁ´æ¿¨µÈרΪǶÈëʽϵͳÉè¼ÆµÄ´æ´¢×°Ö㬱¾ÎÄ·ÖÎöÁËǶÈëʽϵͳÖг£ÓõĴ洢É豸¼°Æä¹ÜÀí»úÖÆ£¬½éÉÜÁ˳£ÓõĻùÓÚFLASHµÄÎļþϵͳÀàÐÍ¡£
1£®Ç¶Èëʽϵͳ´æ´¢É豸¼°Æä¹ÜÀí»úÖÆ·ÖÎö
¡¡¡¡¹¹½¨ÊÊÓÃÓÚǶÈëʽϵͳµÄLi ......
UnixÖеĺ¯ÊýselectºÍpollÓÃÀ´£¬Ö§³ÖUnixÖÐI/O¸´ÓõŦÄÜ£¬ÔÚUnixÖÐI/OÄ£ÐÍ¿ÉÒÔ·ÖΪÒÔÒ»¼¸ÖÖ£º
£¨1£©×èÈûI/O
£¨2£©·Ç×èÈûI/O
£¨3£©I/O¸´Óã¨selectºÍpoll£©
£¨4£©ÐźÅÇý¶¯I/O(SIGIO)
£¨5£©Òì²½I/O
ÆäÖУ¬ÏÖÔڱȽÏÁ÷ÐеÄI/OÄ£ÐÍÊÇ×èÈûI/OÄ£ÐÍ.×èÈûI/OÊǵ±Ó¦ÓóÌÐòºÍÄں˽»»»Êý¾Ýʱ£¬ÓÉÓÚÄں˻¹Ã»ÓÐ×¼±¸ºÃ ......
ÏÂÃæÕâ¸öÀý×ÓÁгöÁËËùÓÐϵͳ¶¨ÒåµÄ´íÎó´úÂë¼°´íÎóÃèÊö
Ô´´úÂëÊÇ£º
/************¹ØÓÚ±¾Îĵµ********************************************
*filename: strerror.c
*purpose: ÁгöÁËϵͳ¶¨ÒåµÄËùÓдíÎó´úÂë¼°ÃèÊö
*wrote by: zhoulifa(zhoulifa@163.com) ÖÜÁ¢·¢(http://zhoulifa.bokee.com)
Linux°®ºÃÕß Linux֪ʶ´«²¥ ......