¡¾LinuxÓ¦ÓÃÓëÇý¶¯¿ª·¢¡¿LinuxÄں˵ÄÅŶÓ×ÔÐýËø
ÅŶÓ×ÔÐýËø(FIFO Ticket Spinlock)ÊÇ Linux ÄÚºË 2.6.25 °æ±¾ÖÐÒýÈëµÄÒ»ÖÖÐÂÐÍ×ÔÐýËø£¬Ëü½â¾öÁË´«Í³×ÔÐýËøÓÉÓÚÎÞÐò¾ºÕùµ¼Öµē¹«Æ½ÐÔ”ÎÊÌâ¡£±¾ÎÄÏêϸ½éÉÜÁËÅŶÓ×ÔÐýËøµÄÉè¼ÆÔÀíºÍ¾ßÌåʵÏÖ£¬²¢Óë ²Ù×÷ϵͳ²ÉÓõÄÀàËÆ¼¼Êõ½øÐбȽϡ£×îºóÌÖÂÛ¿ÉÄܵÄÀ©Õ¹ÅŶÓ×ÔÐýËøµÄһЩÏë·¨¡£
ÒýÑÔ
×ÔÐýËø(Spinlock)ÊÇÒ»ÖÖ Linux ÄÚºËÖй㷺ÔËÓõĵײãͬ²½»úÖÆ¡£×ÔÐýËøÊÇÒ»ÖÖ¹¤×÷ÓÚ¶à´¦ÀíÆ÷»·¾³µÄÌØÊâµÄËø£¬ÔÚµ¥´¦Àí»·¾³ÖÐ×ÔÐýËøµÄ²Ù×÷±»Ì滻Ϊ¿Õ²Ù×÷¡£µ±Ä³¸ö´¦ÀíÆ÷ÉϵÄÄÚºËÖ´ÐÐÏß³ÌÉêÇë×ÔÐýËøÊ±£¬Èç¹ûËø¿ÉÓã¬Ôò»ñµÃËø£¬È»ºóÖ´ÐÐÁÙ½çÇø²Ù×÷£¬×îºóÊÍ·ÅËø£»Èç¹ûËøÒѱ»Õ¼Óã¬Ï̲߳¢²»»áתÈë˯Ãß״̬£¬¶øÊÇæµÈ´ý¸ÃËø£¬Ò»µ©Ëø±»ÊÍ·Å£¬ÔòµÚÒ»¸ö¸ÐÖª´ËÐÅÏ¢µÄÏ߳̽«»ñµÃËø¡£
³¤ÆÚÒÔÀ´£¬ÈËÃÇ×ÜÊǹØ×¢ÓÚ×ÔÐýËøµÄºÍ¸ßЧ£¬¶øºöÊÓÁË×ÔÐýËøµÄ“¹«Æ½”ÐÔ¡£´«Í³µÄ×ÔÐýËø±¾ÖÊÉÏÓÃÒ»¸öÕûÊýÀ´±íʾ£¬ÖµÎª1´ú±íËøÎ´±»Õ¼Óá£ÕâÖÖÎÞÐò¾ºÕùµÄ±¾ÖÊÌØµãµ¼ÖÂÖ´ÐÐÏß³ÌÎÞ·¨±£Ö¤ºÎʱÄÜÈ¡µ½Ëø£¬Ä³Ð©Ï߳̿ÉÄÜÐèÒªµÈ´ýºÜ³¤Ê±¼ä¡£Ëæ×żÆËã»ú´¦ÀíÆ÷¸öÊýµÄ²»¶ÏÔö³¤£¬ÕâÖÖ“²»¹«Æ½”ÎÊÌ⽫»áÈÕÒæÑÏÖØ¡£
ÅŶÓ×ÔÐýËø(FIFO Ticket Spinlock)ÊÇ Linux ÄÚºË 2.6.25 °æ±¾ÒýÈëµÄÒ»ÖÖÐÂÐÍ×ÔÐýËø£¬Ëüͨ¹ý±£´æÖ´ÐÐÏß³ÌÉêÇëËøµÄ˳ÐòÐÅÏ¢½â¾öÁË´«Í³×ÔÐýËøµÄ“²»¹«Æ½”ÎÊÌâ¡£ÅŶÓ×ÔÐýËøµÄ´úÂëÓÉ Linux Äں˿ª·¢Õß Nick Piggin ʵÏÖ£¬Ä¿Ç°Ö»Õë¶Ô x86 Ìåϵ½á¹¹(°üÀ¨ IA32 ºÍ x86_64)£¬ÏàÐźܿì¾Í»á±»ÒÆÖ²µ½ÆäËüƽ̨¡£
´«Í³×ÔÐýËøµÄʵÏÖÓë²»×ã
Linux ÄÚºË×ÔÐýËøµÄµ×²ãÊý¾Ý½á¹¹ raw_spinlock_t ¶¨ÒåÈçÏ£º
typedef struct {
unsigned int slock;
} raw_spinlock_t;
slockËäÈ»±»¶¨ÒåΪÎÞ·ûºÅÕûÊý£¬µ«ÊÇʵ¼ÊÉϱ»µ±×÷ÓзûºÅÕûÊýʹÓá£slockֵΪ1´ú±íËøÎ´±»Õ¼Óã¬ÖµÎª0»ò¸ºÊý´ú±íËø±»Õ¼Óᣳõʼ»¯Ê±slock±»ÖÃΪ1¡£
Ïß³Ìͨ¹ýºê spin_lock ÉêÇë×ÔÐýËø¡£Èç¹û²»¿¼ÂÇÄÚºËÇÀÕ¼£¬Ôò spin_lock µ÷Óà __raw_spin_lock º¯Êý£¬´úÂëÈçÏÂËùʾ£º
static inline void __raw_spin_lock(raw_spinlock_t *lock)
{
asm volatile("\n1:\t"
LOCK_PREFIX " ; decb %0\n\t"
"jns 3f\n"
"2:\t"
"rep;nop\n\t"
"cmpb $0,%0\n\t"
"jle 2b\n\t"
"jmp 1b\n"
"3:\n\t"
: "+m" (lock->
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
¸ÐлÔÎÄ×÷Õߣºhttp://blog.csdn.net/thinkerABC/archive/2006/03/11/621817.aspx
¸ÐлתÌûÕßµÄÅŰ棺http://blog.chinaunix.net/u3/101219/showart_2006014.html
ÎÒÃÇͨ³£°ÑһЩ¹«Óú¯Êý
ÖÆ×÷³Éº¯Êý¿â£¬¹©ÆäËü³ÌÐòʹÓá£
º¯Êý¿â·ÖΪ¾²Ì¬¿âºÍ¶¯Ì¬¿âÁ½ÖÖ¡£
¾²Ì¬¿âÔÚ³ÌÐò±àÒëʱ»á±»Á¬½Óµ½Ä¿±ê´úÂëÖУ¬ ......
1 »ùÓÚ80x86µÄLinux·Ö¶Î»úÖÆ
80386µÄÁ½ÖÖ¹¤×÷ģʽ£º80386µÄ¹¤×÷ģʽ°üÀ¨ÊµµØÖ·Ä£Ê½ºÍÐéµØÖ·Ä£Ê½£¨±£»¤Ä£Ê½£©¡£LinuxÖ÷Òª¹¤×÷ÔÚ±£»¤Ä£Ê½Ï¡£
ÔÚ±£»¤Ä£Ê½Ï£¬80386Ð鵨ַ¿Õ¼ä¿É´ï16K¸ö¶Î£¬Ã¿¶Î´óС¿É±ä£¬×î´ó´ï4GB¡£Âß¼µØÖ·µ½ÏßÐÔµØÖ·µÄת»»ÓÉ80386·Ö¶Î»úÖÆ¹ÜÀí¡£¶Î¼Ä´æÆ÷CS¡¢DS¡¢ES¡¢SS¡¢FS»òGS¸÷±êʶһ¸ö¶Î¡£ÕâЩ¶Î¼Ä´æÆ ......