[¸ßÐÔÄܼ¼Êõ] Linux2.6ÄÚºËepoll½éÉÜ(0.1°æ±¾)
[¸ßÐÔÄܼ¼Êõ] Linux2.6ÄÚºËepoll½éÉÜ(0.1°æ±¾)
ת×Ô£º http://mechgouki.blogdriver.com/mechgouki/601157.html
[×÷Õß]£ºëøêÅ,2005/3/30,0.1°æ±¾
[°æÈ¨ÉùÃ÷]£º´ËÎĵµ×ñÑGNU×ÔÓÉÎĵµÐí¿ÉÖ¤(GNU Free Documentation License).ÈκÎÈË¿ÉÒÔ×ÔÓɸ´ÖÆ,·Ö·¢,ÐÞ¸Ä,²»¹ýÈç¹û·½±ã,Çë×¢Ã÷³ö´¦ºÍ×÷Õß:)
(1)µ¼ÑÔ£º
Ê×ÏÈ£¬ÎÒÇ¿ÁÒ½¨Òé´ó¼ÒÔĶÁRichard StevensÖø×÷¡¶TCP/IP Illustracted Volume 1,2,3¡·ºÍ¡¶UNIX Network Programming Volume 1,2¡·¡£ËäÈ»ËûÀ뿪ÎÒÃÇ´ó¼ÒÒѾ5Äê¶àÁË£¬µ«ÊÇËûµÄÊéÒÀÈ»ÊǽøÈëÍøÂç±à³ÌµÄ×îÖ±½ÓµÄµÀ·¡£ÆäÖеÄ3¾íµÄ¡¶TCP/IP Illustracted¡·¾í1ÊDZضÁ£Èç¹ûÄã²»Á˽âtcpÐÒé¸÷¸öÑ¡ÏîµÄÏêϸ¶¨Ò壬Äã¾ÍʧȥÁËÓÅ»¯³ÌÐòÖØÒªµÄÒ»¸öÊֶΡ£¾í2,3¿ÉÒÔÑ¡¶Áһϡ£±ÈÈç¾í2½²½âµÄÊÇ4.4BSDÄÚºËTCP/IPÐÒéջʵÏÖ----Õâ¸ö°æ±¾µÄÐÒéÕ»¼¸ºõÓ°ÏìÁËÏÖÔÚËùÓеÄÖ÷Á÷os£¬µ«ÊÇÒòΪÄê´ú¾ÃÔ¶£¬ÄÚÈݲ»Ò»¶¨ÄÇôvogue.ÔÚÕâÀïÎÒ¶àÍÆ¼öÒ»±¾¡¶The Linux Networking Architecture--Design and Implementation of Network Protocols in the Linux Kernel¡·£¬ÒÔ2.4Äں˽²½âLinux TCP/IPʵÏÖ£¬Ï൱²»´í.×÷Ϊһ¸öÏÖʵÊÀ½çÖеÄʵÏÖ£¬ºÜ¶àʱºòÄã±ØÐë×÷ºÜ¶àȨºâ£¬Õâʱºò²Î¿¼Ò»¸ö¾Ã¾¿¼ÑéµÄϵͳ¸üÓÐʵ¼ÊÒâÒå¡£¾Ù¸öÀý×Ó,linuxÄÚºËÖÐsk_buff½á¹¹ÎªÁË×·ÇóËٶȺͰ²È«£¬ÎþÉüÁ˲¿·ÖÄڴ棬ËùÒÔÔÚ·¢ËÍTCP°üµÄʱºò£¬ÎÞÂÛÓ¦ÓòãÊý¾Ý¶à´ó,sk_buff×îСҲÓÐ272µÄ×Ö½Ú.
Æäʵ¶ÔÓÚsocketÓ¦Óòã³ÌÐòÀ´Ëµ£¬¡¶UNIX Network Programming Volume 1¡·ÒâÒå¸ü´óÒ»µã.2003ÄêµÄʱºò£¬Õâ±¾Êé³öÁË×îеĵÚ3°æ±¾£¬²»¹ýÖ÷Òª»¹ÊÇÐÞ¶©µÚ2°æ±¾¡£ÆäÖеÚ6Õ¡¶I/O Multiplexing¡·ÊÇ×îÖØÒªµÄ¡£Stevens¸ø³öÁËÍøÂçIOµÄ»ù±¾Ä£ÐÍ¡£ÔÚÕâÀï×îÖØÒªµÄιýÓÚselectÄ£ÐͺÍAsynchronous I/OÄ£ÐÍ.´ÓÀíÂÛÉÏ˵£¬AIOËÆºõÊÇ×î¸ßЧµÄ£¬ÄãµÄIO²Ù×÷¿ÉÒÔÁ¢¼´·µ»Ø£¬È»ºóµÈ´ýos¸æËßÄãIO²Ù×÷Íê³É¡£µ«ÊÇÒ»Ö±ÒÔÀ´£¬ÈçºÎʵÏÖ¾ÍûÓÐÒ»¸öÍêÃÀµÄ·½°¸¡£×îÖøÃûµÄwindowsÍê³É¶Ë¿ÚʵÏÖµÄAIO,ʵ¼ÊÉÏÒ²ÊÇÄÚ²¿ÓÃÏ̳߳ØÊµÏֵİÕÁË£¬×îºóµÄ½á¹ûÊÇIOÓиöÏ̳߳أ¬ÄãÓ¦ÓÃÒ²ÐèÒªÒ»¸öÏ̳߳Ø......ºÜ¶àÎĵµÆäʵÒѾָ³öÁËÕâ´øÀ´µÄÏß³Ìcontext-switch´øÀ´µÄ´ú¼Û¡£
ÔÚlinuxƽ̨ÉÏ£¬¹ØÓÚÍøÂçAIOÒ»Ö±ÊǸ͝×î¶àµÄµØ·½£¬2.4µÄÄê´ú¾ÍÓкܶàAIOÄÚºËpatch,×îÖøÃûµÄÓ¦¸ÃËãÊÇSGIÄǸö¡£µ«ÊÇÒ»Ö±µ½2.6Äں˷¢²¼£¬ÍøÂçÄ£¿éµÄAIOһֱûÓнøÈëÎȶ¨Äں˰汾(´ó²¿·Ö¶¼ÊÇʹÓÃÓû§Ïß³ÌÄ£Äâ·½·¨£¬ÔÚʹÓÃÁËNPTLµÄlinuxÉÏÃæÆäʵºÍwindowsµÄÍê³É¶Ë¿Ú»ù±¾Éϲ¶àÁË)¡£2.6ÄÚºËËùÖ§³ÖµÄAIOÌØÖ¸
Ïà¹ØÎĵµ£º
ÎÒÕýÔÚѧϰдlinux device driver for embedded system.
ÎÒÓÐÒ»¸ölinuxǶÈëʽÉ豸£¬Ò²ÓÐÕâ¸öÉ豸µÄlinuxÔ´´úÂë¡£Ò²ÓÐcross compiler tool chain.
µÚÒ»²½£¬¾ÍÊÇдһ¸ö¼òµ¥µÄhelloÄ£¿é£¬È»ºó×°µ½É豸ÖС£ÒÔÑéÖ¤ÎÒÕâ¸ö¿ª·¢»·¾³¡£
ÔÚÍøÉÏËÑË÷ÁËһϣ¬ how to cross compile linux device driver
·¢ÏÖÔÚlinux´úÂë¸ùĿ¼µÄMak ......
Ŀ¼ºÍÎļþ²Ù×÷
²é¿´µ±Ç°Ä¿Â¼Ïà¶ÔÓÚ¸ùĿ¼µÄλÖÃ
¡¡
¡¡¡¡pwd
²é¿´µ±Ç°Ä¿Â¼ÄÚÈÝ
¡¡¡¡ls
ÒÔ³¤¸ñʽ²é¿´µ±Ç°Ä¿Â¼ÄÚÈÝ¡£¶ÔӦÿ¸öÎļþµÄÌõÄ¿½«°üÀ¨Á¬½ÓÊýÄ¿¡¢ËùÓÐÕß¡¢´óС¡¢×îºóÐÞ¸Äʱ¼ä¡¢È¨ÏÞµÈÄÚÈÝ
¡¡¡¡ls -l
¸Ä±äµ±Ç°Ä¿Â¼¡£Ä¿µÄĿ¼Ãû¿ÉÓÃÏà¶Ô·¾¶±íʾ£¬Ò²¿ÉÒÔÓþø¶Ô·¾¶±íʾ¡£
cd [Ä¿µÄĿ¼Ãû]
×ªÒÆµ½ÉÏÒ»¼¶Ä¿Â¼
c ......
errno±äÁ¿(Ðèinclude errno.h)»á±»¸³Ò»¸öÕûÊýÖµ,²»Í¬µÄÖµ±íʾ²»Í¬µÄº¬Òå,
¿ÉÒÔͨ¹ý²é¿´¸ÃÖµÍÆ²â³ö´íµÄÔÒò¡£µ«ÊÇerrnoÊÇÒ»¸öÊý×Ö£¬´ú±íµÄ¾ßÌ庬Òå
»¹Òªµ½errno.hÖÐÈ¥ÔĶÁºê¶¨Òå¡£ÓÐÏÂÃæ¼¸ÖÖ·½·¨¿ÉÒÔ·½±ãµÄµÃµ½´íÎóÐÅÏ¢
(Ò»)
#include <stdio.h>
void perror(const char *s)
perror()ÓÃÀ´½«ÉÏÒ»¸öº¯Êý·¢Éú´íÎóµÄ ......
Linux»·¾³ÏµÄÈí¼þ°²×°£¬²¢²»ÊÇÒ»¼þÈÝÒ×µÄÊÂÇ飻Èç¹ûͨ¹ýÔ´´úÂë±àÒëºóÔÚ°²×°£¬µ±È»ÊÂÇé¾Í¸üΪ¸´ÔÓһЩ£»ÏÖÔÚ°²×°¸÷ÖÖÈí¼þµÄ½Ì³Ì¶¼·Ç³£ÆÕ±é£»µ«Íò±ä²»ÀëÆäÖУ¬¶Ô»ù´¡ÖªÊ¶µÄÔúÊµÕÆÎÕ£¬°²×°¸÷ÖÖÈí¼þµÄÎÊÌâ¾ÍÓÈжø½âÁË¡£Configure½Å±¾ÅäÖù¤¾ß¾ÍÊÇ»ù´¡Ö®Ò»£¬ËüÊÇautoconfµÄ¹¤¾ßµÄ»ù±¾Ó¦Óá£
ÓëһЩ¼¼ÇÉÏà±È£¬ConfigureÏԵûù´ ......
µÝ¹é²éÕÒÎļþÄÚÈÝ£º
grep -n -ri "slewing" ./
ÔÚµ±Ç°Ä¿Ïµݹé²éÕÒËùÓеÄÎļþ
-i, --ignore-case
Ignore case distinctions  ......