Ïê½âLinuxÄÚºË֮˫ÏòÑ»·Á´±í(ת)
ÕªÒª: ±¾ÎÄÏê½âÁËÄÚºËÖÐÃæÏò¶ÔÏóµÄlist½á¹¹µÄÔÀí£¬ÒÔ¼°ÈçºÎÒÔlistΪÄÚǶ¶ÔÏóÀ´¹¹Ôì×Ô¼ºµÄÁ´±í½á¹¹£¬ÈçºÎ´ÓÄÚǶlist¶ÔÏó»ñµÃ×Ô¶¨ÒåµÄ¶ÔÏóÖ¸Õ룻̽ÌÖÁ˸÷ÖÖºê»òÕߺ¯ÊýµÄÏêϸʹÓ÷½·¨¼°ÔõÑùÒÔͨÓÃlist½á¹¹À´²Ù×÷×Ô¶¨Òå¶ÔÏó¡£
¹Ø¼ü×Ö:Ë«ÏòÑ»·Á´±í£¬list£¬list_entry£¬typeof£¬containerof£¬list_for_each,list_for_each_entry
1¡¢Ë«Ñ»·Á´±í´«Í³ÊµÏÖ
2¡¢LinuxÄÚºËÖÐ˫ѻ·Á´±íʵÏÖ
3¡¢¶¨ÒåºÍ³õʼ»¯
4¡¢Í¨ÓÃÁ´±í²Ù×÷½Ó¿Ú
4.1Ìí¼Ó½Úµã 4.2ɾ³ý½Úµã 4.3ÒÆ¶¯½Úµã 4.4Á´±íÅÐ¿Õ 4.5Á´±íºÏ²¢
5¡¢»ñÈ¡ËÞÖ÷¶ÔÏóÖ¸Õë
6¡¢±éÀú
6.1 List-headÁ´±í±éÀú 6.2±éÀúËÞÖ÷¶ÔÏó
7¡¢ÈçºÎʹÓÃLinuxÖеÄ˫ѻ·Á´±í
1¡¢Ë«Ñ»·Á´±í´«Í³ÊµÏÖ
ÔÚ´«Í³µÄ˫ѻ·Á´±íʵÏÖÖУ¬Èç¹û´´½¨Ä³ÖÖÊý¾Ý½á¹¹µÄ˫ѻ·Á´±í£¬Í¨³£²ÉÓõİ취ÊÇÔÚÕâ¸öÊý¾Ý½á¹¹µÄÀàÐͶ¨ÒåÖмÓÈëÁ½¸ö£¨Ö¸Ïò¸ÃÀàÐͶÔÏóµÄ£©Ö¸ÕënextºÍprev¡£ÀýÈ磺
typedef struct foo {
…
struct foo *prev;
struct foo *next;
…
} foo_t;
ÕâÀï¸ø³öÁ˶ÔÓ¦µÄ½Úµã½á¹¹¡¢¿ÕµÄ˫ѻ·Á´±íºÍ·Ç¿ÕµÄ˫ѻ·Á´±íʾÒâͼ¡£
2¡¢LinuxÄÚºËÖÐ˫ѻ·Á´±íʵÏÖ
ÔÚlinuxÄÚºËÖУ¬ÓдóÁ¿µÄÊý¾Ý½á¹¹ÐèÒªÓõ½Ë«Ñ»·Á´±í£¬ÀýÈç½ø³Ì¡¢Îļþ¡¢Ä£¿é¡¢Ò³ÃæµÈ¡£Èô²ÉÓÃ˫ѻ·Á´±íµÄ´«Í³ÊµÏÖ·½Ê½£¬ÐèҪΪÕâЩÊý¾Ý½á¹¹Î¬»¤¸÷×ÔµÄÁ´±í£¬²¢ÇÒΪÿ¸öÁ´±í¶¼ÒªÉè¼Æ²åÈ롢ɾ³ýµÈ²Ù×÷º¯Êý¡£ÒòΪÓÃÀ´Î¬³ÖÁ´±íµÄnextºÍprevÖ¸ÕëÖ¸Ïò¶ÔÓ¦ÀàÐ͵ĶÔÏó£¬Òò´ËÒ»ÖÖÊý¾Ý½á¹¹µÄÁ´±í²Ù×÷º¯Êý²»ÄÜÓÃÓÚ²Ù×÷ÆäËüÊý¾Ý½á¹¹µÄÁ´±í¡£
ÔÚLinuxÔ´´úÂëÊ÷µÄinclude/linux/list.hÎļþÖУ¬²ÉÓÃÁËÒ»ÖÖÀàÐÍÎ޹صÄ˫ѻ·Á´±íʵÏÖ·½Ê½¡£Æä˼ÏëÊǽ«Ö¸ÕëprevºÍnext´Ó¾ßÌåµÄÊý¾Ý½á¹¹ÖÐÌáÈ¡³öÀ´¹¹³ÉÒ»ÖÖͨÓõÄ"Ë«Á´±í"Êý¾Ý½á¹¹list_head¡£Èç¹ûÐèÒª¹¹ÔìijÀà¶ÔÏóµÄÌØ¶¨Á´±í£¬ÔòÔÚÆä½á¹¹£¨±»³ÆÎªËÞÖ÷Êý¾Ý½á¹¹£©Öж¨ÒåÒ»¸öÀàÐÍΪlist_headÀàÐ͵ijÉÔ±£¬Í¨¹ýÕâ¸ö³ÉÔ±½«ÕâÀà¶ÔÏóÁ¬½ÓÆðÀ´£¬ÐγÉËùÐèÁ´±í£¬²¢Í¨¹ýͨÓÃÁ´±íº¯Êý¶ÔÆä½øÐвÙ×÷¡£ÆäÓŵãÊÇÖ»Ðè±àдͨÓÃÁ´±íº¯Êý£¬¼´¿É¹¹ÔìºÍ²Ù×÷²»Í¬¶ÔÏóµÄÁ´±í£¬¶øÎÞÐèΪÿÀà¶ÔÏóµÄÿÖÖÁбí±àдרÓú¯Êý£¬ÊµÏÖÁË´úÂëµÄÖØÓá£
list_head½á¹¹
-----------struct list_head{}¼°³õʼ»¯ºê---------
struct list_head
{
 
Ïà¹ØÎĵµ£º
Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâÆª·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´Ë×ªÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨ÕâÆª²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......
³õʼ»¯ÖжÏÃèÊö·û±í
ÄÚºËÆôÓÃÖжÏÒÔǰ£¬±ØÐë°Ñidt±íµÄ³õʼµØÖ·×°µ½idtr¼Ä´æÆ÷£¬²¢³õʼ»¯±íÖеÄÿһÏî¡£ÕâÏ×÷ÊÇÔÚ³õʼ»¯ÏµÍ³Ê±Íê³É¡£
intÖ¸ÁîÔÊÐíÓû§Ì¬½ø³Ì·¢³öÒ»¸öÖжÏÐźţ¬ÆäÖµ¿ÉÒÔÊÇ0-255µÄÈÎÒâÒ»¸öÏòÁ¿¡£Òò´Ë¡£ÎªÁË·ÀÖ¹Óû§Í¨¹ýintÖ¸ÁîÄ£Äâ·Ç·¨µÄÖжϺÍÒì³££¬idtµÄ³õʼ»¯±ØÐë·Ç³£Ð¡ÐÄ¡£Õâ¿ÉÒÔͨ¹ý°ÑÖжϻòÕßÏÝÚåà ......
Öжϴ¦ÀíÒÀÀµÓÚÖжÏÀàÐÍ£¬ÓÐÈýÖÖÖ÷ÒªµÄÖжÏÀàÐÍ£º
i/oÖжϣºÄ³Ð©i/É豸ÐèÒª¹Ø×¢£»ÏàÓ¦µÄÖжϴ¦Àí³ÌÐò±ØÐë²éѯÉ豸ÒÔÈ·¶¨Êʵ±µÄ²Ù×÷¹ý³Ì¡£
ʱÖÓÖжϣºÄ³ÖÖʱÖÓ£¨»òÕßÊÇÒ»¸ö±¾µØapicʱÖÓ£¬»òÕßÊÇÒ»¸öÍⲿʱÖÓ£©²úÉúÒ»¸öÖжϣ»ÕâÖÖÖжϸæËßÄÚºËÒ»¸ö¹Ì¶¨µÄʱ¼ä¼ä¸ôÒѾ¹ýÈ¥¡£ÕâЩÖжϴ󲿷ÖÊÇ×÷Ϊi/oÖжÏÀ´´¦ÀíµÄ¡£
´¦ÀíÆ÷¼ä ......
¡¾recv/recvfrom/recvmsgϵͳµ÷Óá¿
¹¦ÄÜÃèÊö£º
´ÓÌ×½Ó×ÖÉϽÓÊÕÒ»¸öÏûÏ¢¡£¶ÔÓÚrecvfrom ºÍ recvmsg£¬¿ÉͬʱӦÓÃÓÚÃæÏòÁ¬½ÓµÄºÍÎÞÁ¬½ÓµÄÌ×½Ó×Ö¡£recvÒ»°ãÖ»ÓÃÔÚÃæÏòÁ¬½ÓµÄÌ×½Ó×Ö£¬¼¸ºõµÈͬÓÚrecvfrom£¬Ö»Òª½«recvfromµÄµÚÎå¸ö²ÎÊýÉèÖÃNULL¡£
Èç¹ûÏûϢ̫´ó£¬ÎÞ·¨ÍêÕû´æ·ÅÔÚËùÌṩµÄ»º³åÇø£¬¸ù¾Ý²»Í¬µÄÌ×½Ó×Ö£¬¶àÓà ......
2009Äê12ÔÂ29ÈÕ£¬Ìì¼«ÍøÖ÷°ìµÄÖ÷ÌâΪ“2010ÄêµÄ»ú»á”µÄÑÐÌֻᣬÔÚÖйشåÓ²Å̾ưɾÙÐС£À´×ÔÖпƺìÆì¡¢°Ë°Ù¿Í¡¢Ê±´úÒÚÐÅ¡¢¹ãͨÐÅ´ï¡¢360°²È«ÎÀÊ¿µÄר¼Ò²Î¼ÓÁËÕâ´Î»î¶¯¡£»áÉÏ£¬¼ÇÕßר·ÃÁËÖпƺìÆìÈí¼þ¼¼Êõ¹«Ë¾²úÆ·Êг¡²¿×ܼཪºì¡£
¡¡
¡¡Ì¸Æð¿ª¹ú²úÔ´Èí¼þ2009ÄêµÄ±íÏÖ£¬½ªºì½éÉÜ˵£º“LinuxÒѾÈÕÇ÷³ÉÊì£¬Ê ......