Linux¶ÔI/O¶Ë¿Ú×ÊÔ´µÄ¹ÜÀí(1)
continue;
return tmp;
}
}
¶Ôº¯ÊýµÄNOTE£º
¢ÙǰÈý¸öifÓï¾äÅжÏnewËùÃèÊöµÄ×ÊÔ´·¶Î§ÊÇ·ñ±»°üº¬ÔÚrootÄÚ£¬ÒÔ¼°ÊÇ·ñÊÇÒ»¶ÎÓÐЧµÄ×ÊÔ´£¨ÒòΪend±ØÐë´óÓÚstart£©¡£·ñÔò¾Í·µ»ØrootÖ¸Õ룬±íʾÓë¸ù½áµãÏà³åÍ»¡£
¢Ú½ÓÏÂÀ´ÓÃÒ»¸öforÑ»·±éÀú¸ù½ÚµãrootµÄchildÁ´±í£¬ÒÔ±ã¼ì²éÊÇ·ñÓÐ×ÊÔ´³åÍ»£¬²¢½«new²åÈëµ½childÁ´±íÖеĺÏÊÊλÖã¨childÁ´±íÊÇÒÔI/O×ÊÔ´ÎïÀíµØÖ·´ÓµÍµ½¸ßµÄ˳ÐòÅÅÁеģ©¡£Îª´Ë£¬ËüÓÃtmpÖ¸ÕëÖ¸Ïòµ±Ç°Õý±»É¨ÃèµÄresource½á¹¹£¬ÓÃÖ¸ÕëpÖ¸Ïòǰһ¸öresource½á¹¹µÄsiblingÖ¸Õë³ÉÔ±±äÁ¿£¬pµÄ³õʼֵΪָÏòroot£>sibling¡£ForÑ»·ÌåµÄÖ´Ðв½ÖèÈçÏ£º
l ÈÃtmpÖ¸Ïòµ±Ç°Õý±»É¨ÃèµÄresource½á¹¹£¨tmp£½*p£©¡£
l ÅжÏtmpÖ¸ÕëÊÇ·ñΪ¿Õ£¨tmpÖ¸ÕëΪ¿Õ˵Ã÷ÒѾ±éÀúÍêÕû¸öchildÁ´±í£©£¬»òÕßµ±Ç°±»É¨Ãè½ÚµãµÄÆðʼλÖÃstartÊÇ·ñ±ÈnewµÄ½áÊøÎ»ÖÃend»¹Òª´ó¡£Ö»ÒªÕâÁ½¸öÌõ¼þÖ®Ò»³ÉÁ¢µÄ»°£¬¾Í˵Ã÷ûÓÐ×ÊÔ´³åÍ»£¬ÓÚÊǾͿÉÒÔ°ÑnewÁ´ÈëchildÁ´±íÖУº¢ÙÉèÖÃnewµÄsiblingÖ¸ÕëÖ¸Ïòµ±Ç°Õý±»É¨ÃèµÄ½Úµãtmp£¨new->sibling=tmp£©£»¢Úµ±Ç°½ÚµãtmpµÄǰһ¸öÐֵܽڵãµÄsiblingÖ¸Õë±»ÐÞ¸ÄΪָÏònewÕâ¸ö½Úµã£¨*p=new£©£»¢Û½«newµÄparentÖ¸ÕëÉèÖÃΪָÏòroot¡£È»ºóº¯Êý¾Í¿ÉÒÔ·µ»ØÁË£¨·µ»ØÖµNULL±íʾûÓÐ×ÊÔ´³åÍ»£©¡£
l Èç¹ûÉÏÊöÁ½¸öÌõ¼þ¶¼²»³ÉÁ¢£¬Õâ˵Ã÷µ±Ç°±»É¨Ãè½ÚµãµÄ×ÊÔ´ÓòÓпÉÄÜÓënewÏà³åÍ»£¨Êµ¼ÊÉϾÍÊÇÁ½¸ö±ÕÇø¼äÓн»¼¯£©£¬Òò´ËÐèÒª½øÒ»²½Åжϡ£Îª´ËËüÊ×ÏÈÐÞ¸ÄÖ¸Õëp£¬ÈÃËüÖ¸Ïòtmp->sibling£¬ÒÔ±ãÓÚ¼ÌÐøÉ¨ÃèchildÁ´±í¡£È»ºó£¬ÅжÏtmp->endÊÇ·ñСÓÚnew->start£¬Èç¹ûСÓÚ£¬Ôò˵Ã÷µ±Ç°½ÚµãtmpºÍnewûÓÐ×ÊÔ´³åÍ»£¬Òò´ËÖ´ÐÐcontinueÓï¾ä£¬¼ÌÐøÏòÏÂɨÃèchildÁ´±í¡£·ñÔò£¬Èç¹ûtmp->end´óÓÚ»òµÈÓÚnew->start£¬Ôò˵Ã÷tmp->[start,end]ºÍnew->[start,end]Ö®¼äÓн»¼¯¡£ËùÒÔ·µ»Øµ±Ç°½ÚµãµÄÖ¸Õëtmp£¬±íʾ·¢Éú×ÊÔ´³åÍ»¡£
3£®2£®2 ×ÊÔ´µÄÊÍ·Å
º¯Êýrelease_resource()ÓÃÓÚʵÏÖI/O×ÊÔ´µÄÊÍ·Å¡£¸Ãº¯ÊýÖ»ÓÐÒ»¸ö²ÎÊý——¼´Ö¸Õëold£¬ËüÖ¸ÏòËùÒªÊͷŵÄ×ÊÔ´¡£ÆðÔ´´úÂëÈçÏ£º
int release_resource(struct resource *old)
{
int retval;
write_lock(&resource_lock);
retval = __release_resource(old);
write_unlock(&resource_lock);
return retval;
}
¿ÉÒÔ¿´³ö£¬Ëüʵ¼ÊÉÏͨ¹ýµ÷ÓÃ__release_resource()Õâ¸öÄÚ²¿¾²Ì¬º¯ÊýÀ´Íê³Éʵ¼ÊµÄ×ÊÔ´Êͷʤ×÷¡£º¯Êý__release_resource()µÄÖ÷ÒªÈÎÎñ¾ÍÊǽ«×ÊÔ´ÇøÓòold£¨Èç¹ûÒѾ´æÔڵϰ£©´ÓÆä¸¸×ÊÔ´µÄchildÁ´±íÖØÕª³ý£¬ËüµÄÔ´´úÂëÈçÏ£º
static int __release_resource(struct resource *old)
Ïà¹ØÐÅÏ¢
- RouterOSµÄ±¸·ÝºÍ»Ö¸´
- Linux¶ÔI/O¶Ë¿Ú×ÊÔ´µÄ¹ÜÀí(2)
- LinuxµÄµ¥Óû§¡¢ÐÞ¸´Ä£Ê½µÈÔÚϵͳÐÞ¸´
- Linuxµ½×ÀÃæÉÐÐèʱÈÕ
- ÈçºÎÔ¶³Ì°²×°Linux²Ù×÷ϵͳ
- ͼ½âºìÆìLinux 4.0×ÀÃæÏµÍ³µÄ°²×°
- [Linux]Mandrake 9.0°²×°ºÍÉý¼¶Ó÷¨
- linuxÈëÃÅ½Ì³Ì µÚ1Õ ϵͳ¼ò½é
- linuxÈëÃÅ½Ì³Ì µÚ5Õ£ºÍøÂçÓ¦ÓÃ
- Linux¹ÜÀíÔ±ÊÖ²á(4)--ÄÚ´æ¹ÜÀí
- Linux¹ÜÀíÔ±ÊÖ²á(7)--¹ÜÀíÓû§ÕÊ»§
- ºìñÈÏÖ¤¹¤³Ìʦ³£¼ûÎÊÌâ½â´ð
Ó²¼þ¹ÊÕÏרÌâ
¸ü¶àÈí¼þ¹ÊÕÏάÐÞ
¸ü¶à- ÎÒÕâÑùµÄ±¾±¾ÄÜ¿´[ºÚ¿ÍµÛ¹ú].The.Matri
- Excelº¯ÊýѧÉú³É¼¨µÈ¼¶ÆÀ¶¨ÇáËɸ㶨
- ×îÐÂmpchc_x86_v1.1.0.0_MPCVideoDecÏÂ
- Word¹¤¾ßÀ¸°´Å¥Ö±½ÓÆô¶¯Íⲿ³ÌÐò
- ÎóÉϵöÓãÍøÕ¾! °ÁÓθ㶨ÉÏÍø°²È«
- ѹËõH264µÈ³£ÓõÄÈí¼þ£¿
- ¸ø¸÷λ·ÓÑÒ»¸öÉèÖÃ.
- 2600ʹÓÃ8.3°æÇý¶¯Ó²½âMKV¸ñʽµÄÎÊÌâ
- Excel½«Îı¾×ª»»ÎªÊý×ֵįßÖÖ·½·¨
- Õýȷʶ±ðÕæ¼ÙPowerDVD8Ultra(ѶÁ¬¼«ÖÂ
ÔĶÁÅÅÐÐ
- LINUXÈí¼þʵÓÃÆª£¨ÉÏ£©
- µÚÈýÕ Linux ϵͳ¹ÜÀí£¨ÖУ©
- ½éÉÜLinuxÄÚºËÎļþCache¹ÜÀí»úÖÆ(ÏÂ)
- ÔÚLinux×ÀÃæÉÏËæÒâʹÓÃWindowsµÄÎĵµ
- ΪLinux²Ù×÷ϵͳ°²×°µÚ¶þ¸öÓ²ÅÌ
- Slax±¾µØ»¯:Ò»¸öÔÚÒÆ¶¯Ó²ÅÌÉϵÄLinuxÖÐ
- ¸ãЦ:ÓÐÖÖÄã¾ÍÊÔ!12²½ÈÃWindows±ä³ÉLin
- Linux²Ù×÷ϵͳÎļþȨÏÞµÄÉèÖ÷½·¨
- LiunxÎļþϵͳ»ù±¾Ä¿Â¼½éÉÜ´óÈ«
- ·þÎñÆ÷Ö÷Á÷²Ù×÷ϵͳ¼òÎö
- NovellÔâ΢ÈíÍÙÆú ½«½û·¢Linux£¿
- Linux°²È«Òþ»¼¼°¼ÓÇ¿°²È«¹ÜÀí
