Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

¡¾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->


Ïà¹ØÎĵµ£º

ʵսLinux Bluetooth±à³Ì(Áù) L2CAP±à³ÌʵÀý

ÀýÒ»£º·¢ËÍSignaling Packet£º
Signaling CommandÊÇ2¸öBluetoothʵÌåÖ®¼äµÄL2CAP²ãÃüÁî´«Êä¡£ËùÒÔµÃSignaling CommandʹÓÃCID 0x0001.
¶à¸öCommand¿ÉÒÔÔÚÒ»¸öC-frame£¨control frame£©Öз¢ËÍ¡£
 Èç¹ûÒªÖ±½Ó·¢ËÍSignaling Command.ÐèÒª½¨Á¢SOCK_RAWÀàÐ͵ÄL2CAPÁ¬½ÓSocket¡£ÕâÑù²ÅÓлú»á×Ô¼ºÌî³äCommand Code£¬Identi ......

ʵսLinux Bluetooth±à³Ì (Æß) SDPЭÒé

Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖЭÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀЭÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......

¶ÁÊé±Ê¼ÇÖ®¡¶Linux Device Driver¡· £¨Ò»£©

LinuxÉ豸Çý¶¯
 
µÚÒ»Õ É豸Çý¶¯¼ò½é
Çý¶¯³ÌÐòµÄ½ÇÉ«ÊÇÌṩ»úÖÆ£¬¶ø²»ÊDzßÂÔ¡£
±àдÄں˴úÂëÀ´´æÈ¡Ó²¼þ£¬µ«ÊDz»ÄÜÇ¿¼ÓÌرðµÄ²ßÂÔ¸øÓû§(Ö»ÐèÒª±íÏÖ³öÓ²¼þµÄ×î»ù±¾µÄ¹¦ÄÜ£¬ÈçºÎʹÓÃÕâЩ¹¦ÄÜÓÖÓû§×Ô¼ºÑ¡Ôñ)
¶Ô²ßÂÔ͸Ã÷µÄÇý¶¯ÌØÕ÷£ºÖ§³Öͬ²½ºÍÒì²½²Ù×÷¡¢¿ÉÒÔ¶à´Î´ò¿ª¡¢ÀûÓÃÓ²¼þÈ«²¿ÄÜÁ¦¡¢Ã»ÓÐÈí¼þ²ãÌṩ²ßÂÔÏà¹Ø ......

LinuxȱÉÙÎļþ½â¾ö·½°¸²Î¿¼

ÔÚLinuxÖа²×°Èí¼þ¾­³£»á³öÏÖȱÉÙÎļþ£¬¾ßÌå±íÏÖÔÚ±àÒëʱ³öÏÖȱÉÙÍ·Îļþ£¬¶øÔÚÓÃRPM°üʱ³öÏÖÒÀÀµ¹Øϵ£¬¸ø´ó¼Ò·ÖÏíÏÂÎÒÔÚʹÓÃÖг£³öÏÖµÄȱÉÙÎļþ½â¾ö·½°¸
¡¡¡¡1¡¢¹ØÓÚrpmbuild
¡¡¡¡ÔÚʹÓÃ***.src.rpmʱ£¬ÐèÒªÓÃrpmbuildÃüÁÆä±äΪ***.rpm¸ñʽ£¬¶ørpmbuildµÄʹÓÃÊÇÐèÒªÏÈ°²×°rpm-build….rpmÕâ¸ö°üµÄ¡£
¡¡¡¡2¡¢±àÒ ......

ʲôÊÇ Ubuntu Linux Èí¼þÔ´

Ô´£¬ÔÚubuntuÏ£¬Ëü¾ÍÏ൱ÓÚÈí¼þ¿â£¬ÐèҪʲôÈí¼þ£¬Ö»Òª¼ÇµÃÕýÈ·µÄÈí¼þÃû²¢ÇÒÈ·¶¨ÔÚubuntuÏ¿϶¨ÓеÄÈí¼þ£¬¾Í¿ÉÒÔʹÓÃÃüÁîÀ´°²×°Èí¼þµÄ£¨µ±È»Ò²¿ÉÒÔÓÃÐÂÁ¢µÃÀ´°²×°£©ÃüÁîÊÇ£ºsudo apt -get install Èí¼þÃû £¬±ÈÈç˵QQ£¬Äã²»ÄÜÊäÈë³É sudo apt-get install qq ,Õâ¸öÊDz»¶ÔÁË£¬ÒòΪQQûÓÐ linux°æµÄ£¬Ö»ÄÜÓôúÌæÀ´ÊµÏÖ£¬±ÈÈç´ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ