Linux Kernel API (2.6)
#protect share data
spin_lock/spin_unlock: protect the data during process context(and only at process context), and make sure your code bewteen lock/unlock is fast enough.There may deadlock if the same spin_lock is called at interrupt context.
spin_lock_irq/spin_unlock_irq: call it during interrupt context, make sure the irq is on before calling this function, it will disable irq before accessing share data
spin_lock_irqsave/irqrestore: use at interrupt context, and will save/restort irq registers
The code between spin_lock**/spin_unlock** must not sleep.
The spin_lock** API is defined at include/linux/spinlock_api_up.h for UP architecture.
linux/kernel/spinlock.c is only for SMP.
mutex_lock/mutex_unlock: the similar with down/up, but more efficient
mutex_lock_interruptible: the simlilar with down_interruptiable, can be interruptiable by signal.(like CTRL-C)
the code beween mutex_lock and mutex_unlock can go to sleep
Ïà¹ØÎĵµ£º
ÖÁ´ËÂä±ÊÖ®¼Ê£¬Ç¡ÖÁLinuxÎÊÊÀ18ÖÜÄ꣬18ÄêµÄ³É³¤£¬ÈçÃÎËÆ»Ã£¬·çÓêÆÄ¶à£¬¸Ð¿®ÆÄ¶à¡£
ÓÌ×ÔÒäÆð¶àÄêÒÔǰһλǰ±²Ñµµ¼Ê±µÄóðÑÔ£º½ñÌìµÄ±ØÈ»ÕýÊÇÓÉ֮ǰһϵÁеÄżȻËù¾ö¶¨µÄ¡£¹ýÈ¥µÄijÄêijÔ£¬ÎÒżȻ³õʶLinux¾ÍÉíÏÝÆäÖУ¬ÖÁ½ñÈÔÕÒ²»µ½³öÈ¥µÄ·£¬¶øÕýÊÇÕâ´ÎÄËÖÁÖ®ºóµÄ¶à´ÎżȻÏàÁªºÏ£¬´Ó¶ø¾ö¶¨Á˽ñÈÕµÄÎÒÒªÔÚ´ËдÏÂÕâЩ»°¡£ÄÇô ......
2¡£ ¼¼ÊõÍøµã£º
csdn.net
chinaunix.net
ibm.com/developerworks/cn/linux
LinuxÄÚ´æÊ¹ÓÃÏê½â£º
http://blog.chinaunix.net/u2/67750/showart_2154542.html
3¡£ Linux¼¼Êõµã
ϵͳ¹ÜÀíÃüÁî(expect.)
shell±à³Ì
ÕýÔò±í´ïʽ
busybox
Îļþϵͳ
4¡£ ÆäËü¼¼Êõµã
pclint£¨¾²Ì¬´úÂë¼ì²é¹¤¾ß£©
source monitor ......
¡¡ÔÚLinuxϵͳÖУ¬Èç¹ûҪʹÓÃÓ²ÅÌ¡¢¹âÅÌ¡¢ÈíÅÌ»òMOÅ̵ȴ洢É豸£¬±ØÐëÏȽøÐйÒ×°£¨Mount£©¡£µ±´æ´¢É豸¹Ò×°Íê³ÉÖ®ºó£¬¾Í¿ÉÒÔ½«Æä×÷Ϊһ¸öĿ¼À´½øÐзÃÎÊÁË¡£¹Ò×°É豸ÐèҪʹÓÃmountÃüÁî¡£Ö´ÐÐÕâÒ»ÃüÁÖÁÉÙÒªÏÈÈ·¶¨ÏÂÁÐÈýÖÖÐÅÏ¢£º
¡¡¡¡1. Òª¹Ò×°£¨Mount£©¶ÔÏóµÄÎļþϵͳÀàÐÍ£»
¡¡¡¡2. Òª¹Ò×°£¨Mount£©¶ÔÏóµÄÉ豸à ......
I learned some experience while Nanjing found 0x03 error. At begining, we don't know why our GSRM(a linux process) hang in a short time 5 seconds sometimes. It didn't handle any message at that time and the interruption is not regularly. So we assume we have Linux OS problem. We did following checks ......
2005Äê9ÔÂ22ÈÕ£¬Ç廪ÔÚ¶Á²©Ê¿ÉúÍõÛóÔÚˮľÉçÇøBLOGÉÏ·¢±íÁË¡¶Ç廪ÃεķÛËé--д¸øÇ廪´óѧµÄÍËѧÉêÇë¡·Ã÷È·ÒªÇóÍËѧ, ÒýÆðÉç»á¸÷½ç¹ã·ºÕùÂÛ. Ëû´´×÷µÄ³¤ÆªÎÄÕ¡¶ÍêÈ«ÓÃLinux¹¤×÷¡·, ÑóÑóÁ½Íò¶à×Ö, ´Ó²»Í¬½Ç¶È¾Ó¸ßÁÙϵIJûÊöÁËËûÑÛÖÐLinuxÍêÈ«ÓÅÔ½ÓÚWindowsµÄ¸÷ÖÖÀíÓÉ, ÕâÆªÎÄÕ²¢²»¼òµ¥µÄÊÇһƪÂÛÊö"WindowsÄÜ×öµÄÊÂLinux¶¼Ä ......