[ת]linux Äں˷ÖÎöÖ®list_head
linux Äں˷ÖÎöÖ®list_head
±¾ÎÄÏêϸ·ÖÎöÁË 2.6.x ÄÚºËÖÐÁ´±í½á¹¹µÄʵÏÖ£¬²¢Í¨¹ýʵÀý¶Ôÿ¸öÁ´±í²Ù×÷½Ó¿Ú½øÐÐÁËÏ꾡µÄ½²½â¡£
Ò»¡¢ Á´±íÊý¾Ý½á¹¹¼ò½é
Á´±íÊÇÒ»ÖÖ³£ÓõÄ×éÖ¯ÓÐÐòÊý¾ÝµÄÊý¾Ý½á¹¹£¬Ëüͨ¹ýÖ¸Õ뽫һϵÁÐÊý¾Ý½ÚµãÁ¬½Ó³ÉÒ»ÌõÊý¾ÝÁ´£¬ÊÇÏßÐÔ±íµÄÒ»ÖÖÖØÒªÊµÏÖ·½Ê½¡£Ïà¶ÔÓÚÊý×飬Á´±í¾ßÓиüºÃµÄ¶¯Ì¬ÐÔ£¬½¨Á¢Á´±íʱÎÞÐèÔ¤ÏÈÖªµÀÊý¾Ý×ÜÁ¿£¬¿ÉÒÔËæ»ú·ÖÅä¿Õ¼ä£¬¿ÉÒÔ¸ßЧµØÔÚÁ´±íÖеÄÈÎÒâλÖÃʵʱ²åÈë»òɾ³ýÊý¾Ý¡£Á´±íµÄ¿ªÏúÖ÷ÒªÊÇ·ÃÎʵÄ˳ÐòÐÔºÍ×éÖ¯Á´µÄ¿Õ¼äËðʧ¡£
ͨ³£Á´±íÊý¾Ý½á¹¹ÖÁÉÙÓ¦°üº¬Á½¸öÓò£ºÊý¾ÝÓòºÍÖ¸ÕëÓò£¬Êý¾ÝÓòÓÃÓÚ´æ´¢Êý¾Ý£¬Ö¸ÕëÓòÓÃÓÚ½¨Á¢ÓëÏÂÒ»¸ö½ÚµãµÄÁªÏµ¡£°´ÕÕÖ¸ÕëÓòµÄ×éÖ¯ÒÔ¼°¸÷¸ö½ÚµãÖ®¼äµÄÁªÏµÐÎʽ£¬Á´±íÓÖ¿ÉÒÔ·ÖΪµ¥Á´±í¡¢Ë«Á´±í¡¢Ñ»·Á´±íµÈ¶àÖÖÀàÐÍ£¬ÏÂÃæ·Ö±ð¸ø³öÕ⼸Àà³£¼ûÁ´±íÀàÐ͵ÄʾÒâͼ£º
1£® µ¥Á´±í
ͼ1 µ¥Á´±í
µ¥Á´±íÊÇ×î¼òµ¥µÄÒ»ÀàÁ´±í£¬ËüµÄÌØµãÊǽöÓÐÒ»¸öÖ¸ÕëÓòÖ¸Ïòºó¼Ì½Úµã£¨next£©£¬Òò´Ë£¬¶Ôµ¥Á´±íµÄ±éÀúÖ»ÄÜ´ÓÍ·ÖÁβ£¨Í¨³£ÊÇNULL¿ÕÖ¸Õ룩˳Ðò½øÐС£
2£® Ë«Á´±í
ͼ2 Ë«Á´±í
ͨ¹ýÉè¼ÆÇ°ÇýºÍºó¼ÌÁ½¸öÖ¸ÕëÓò£¬Ë«Á´±í¿ÉÒÔ´ÓÁ½¸ö·½Ïò±éÀú£¬ÕâÊÇËüÇø±ðÓÚµ¥Á´±íµÄµØ·½¡£Èç¹û´òÂÒǰÇý¡¢ºó¼ÌµÄÒÀÀµ¹ØÏµ£¬¾Í¿ÉÒÔ¹¹³É"¶þ²æÊ÷"£»Èç¹ûÔÙÈÃÊ×½ÚµãµÄǰÇýÖ¸ÏòÁ´±íβ½Úµã¡¢Î²½ÚµãµÄºó¼ÌÖ¸ÏòÊ׽ڵ㣨Èçͼ2ÖÐÐéÏß²¿·Ö£©£¬¾Í¹¹³ÉÁËÑ»·Á´±í£»Èç¹ûÉè¼Æ¸ü¶àµÄÖ¸ÕëÓò£¬¾Í¿ÉÒÔ¹¹³É¸÷ÖÖ¸´ÔÓµÄÊ÷×´Êý¾Ý½á¹¹¡£
3£® Ñ»·Á´±í
Ñ»·Á´±íµÄÌØµãÊÇβ½ÚµãµÄºó¼ÌÖ¸ÏòÊ×½Úµã¡£Ç°ÃæÒѾ¸ø³öÁË˫ѻ·Á´±íµÄʾÒâͼ£¬ËüµÄÌØµãÊÇ´ÓÈÎÒâÒ»¸ö½Úµã³ö·¢£¬ÑØÁ½¸ö·½ÏòµÄÈκÎÒ»¸ö£¬¶¼ÄÜÕÒµ½Á´±íÖеÄÈÎÒâÒ»¸öÊý¾Ý¡£Èç¹ûÈ¥µôǰÇýÖ¸Õ룬¾ÍÊǵ¥Ñ»·Á´±í¡£
ÔÚLinuxÄÚºËÖÐʹÓÃÁË´óÁ¿µÄÁ´±í½á¹¹À´×éÖ¯Êý¾Ý£¬°üÀ¨É豸ÁбíÒÔ¼°¸÷ÖÖ¹¦ÄÜÄ£¿éÖеÄÊý¾Ý×éÖ¯¡£ÕâЩÁ´±í´ó¶à²ÉÓÃÔÚ[include/linux/list.h]ʵÏÖµÄÒ»¸öÏ൱¾«²ÊµÄÁ´±íÊý¾Ý½á¹¹¡£±¾Îĵĺó¼Ì²¿·Ö¾Í½«Í¨¹ýʾÀýÏêϸ½éÉÜÕâÒ»Êý¾Ý½á¹¹µÄ×éÖ¯ºÍʹÓá£
¶þ¡¢ Linux 2.6ÄÚºËÁ´±íÊý¾Ý½á¹¹µÄʵÏÖ
¾¡¹ÜÕâÀïʹÓÃ2.6ÄÚºË×÷Ϊ½²½âµÄ»ù´¡£¬µ«Êµ¼ÊÉÏ2.4ÄÚºËÖеÄÁ´±í½á¹¹ºÍ2.6²¢Ã»ÓÐÊ²Ã´Çø±ð¡£²»Í¬Ö®´¦ÔÚÓÚ2.6À©³äÁËÁ½ÖÖÁ´±íÊý¾Ý½á¹¹£ºÁ´±íµÄ¶Á¿½±´¸üУ¨rcu£©ºÍHASHÁ´±í£¨hlist£©¡£ÕâÁ½ÖÖÀ©Õ¹¶¼ÊÇ»ùÓÚ×î»ù±¾µÄlist½á¹¹£¬Òò´Ë£¬±¾ÎÄÖ÷Òª½éÉÜ»ù±¾Á´±í½á¹¹£¬È»ºóÔÙ¼òÒª½éÉÜÒ»ÏÂrcuºÍhlist¡£
Á´±íÊý¾Ý½á¹¹µÄ¶¨ÒåºÜ¼òµ¥£¨½ÚÑ¡×Ô[include/linux/list.h]£¬ÒÔÏÂËùÓдúÂ룬³ý·Ç¼ÓÒÔ˵Ã÷£¬ÆäÓà¾
Ïà¹ØÎĵµ£º
Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâÆª·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´Ë×ªÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨ÕâÆª²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......
ÔÚunix/linuxÏ£¬¾³£ÓÐÒòΪ¹²ÏíÄÚ´æ¡¢ÐźÅÁ¿£¬¶ÓÁеȹ²ÏíÐÅϢûÓиɾ»µØÇå³þ¶øÒýÆðһЩÎÊÌâ¡£
²é¿´¹²ÏíÐÅÏ¢µÄÄÚ´æµÄÃüÁîÊÇipcs [-m|-s|-q]¡£
ĬÈÏ»áÁгö¹²ÏíÄÚ´æ¡¢ÐźÅÁ¿£¬¶ÓÁÐÐÅÏ¢£¬-mÁгö¹²ÏíÄڴ棬-sÁгö¹²ÏíÐźÅÁ¿£¬-qÁгö¹²Ïí¶ÓÁС£
ÔõÑùÇå³þÄØ£¿
Çå³þÃüÁîÊÇipcrm [-m|-s|-q] id¡£
-m ɾ³ý¹²ÏíÄڴ棬-sɾ³ý¹²ÏíÐ ......
É¢ÁУ¨hash£©º¯Êý²¢²»×ÜÄÜÈ·±£pidÓë±íË÷ÒýÒ»Ò»¶ÔÓ¦¡£Á½¸ö²»Í¬µÄpidÉ¢Áе½ÏàͬµÄ±íË÷Òý³ÆÎª³åÍ»£¨colliding£©,linuxÀûÓÃÁ´±íÀ´´¦Àí³åÍ»µÄpid,ÿһ¸ö±íÏîÊÇÓɳåÍ»µÄ½ø³ÌÃèÊö·û×é³ÉµÄË«ÏòÁ´±í¡£
pidÉ¢ÁбíµÄÊý¾Ý½á¹¹½â¾öÁËËùÓÐÕâЩÄÑÌ⣬ËûÃÇ¿ÉÒÔΪ°üº¬ÔÚÒ»¸öÉ¢ÁбíÖеÄÈκÎpidºÅ¶¨Òå½ø³ÌÁ´±í¡£×îÖ÷ÒªµÄÊý¾Ý½á¹¹ÊÇËĸöpid½á ......