LinuxÉ豸Çý¶¯±à³ÌÖ®×èÈûÓë·Ç×èÈû
×èÈû²Ù×÷ÊÇÖ¸£¬ÔÚÖ´ÐÐÉ豸²Ù×÷ʱ£¬Èô²»ÄÜ»ñµÃ×ÊÔ´£¬Ôò½ø³Ì¹ÒÆðÖ±µ½Âú×ã¿É²Ù×÷µÄÌõ¼þÔÙ½øÐвÙ×÷¡£·Ç×èÈû²Ù×÷µÄ½ø³ÌÔÚ²»ÄܽøÐÐÉ豸²Ù×÷ʱ£¬²¢²»¹ÒÆð¡£±»¹ÒÆðµÄ½ø³Ì½øÈësleep״̬£¬±»´Óµ÷¶ÈÆ÷µÄÔËÐжÓÁÐÒÆ×ߣ¬Ö±µ½µÈ´ýµÄÌõ¼þ±»Âú×ã¡£
¡¡¡¡ÔÚLinux
¡¡¡¡¹ØÓÚÉÏÊöÀý³Ì£¬ÎÒÃDz¹³ä˵һµã£¬Èç¹û½«Çý¶¯³ÌÐòÖеÄreadº¯Êý¸ÄΪ£º
static ssize_t globalvar_read(struct file *filp, char *buf, size_t len, loff_t *off)
{
¡¡//»ñÈ¡ÐźÅÁ¿£º¿ÉÄÜ×èÈû
¡¡if (down_interruptible(&sem))
¡¡{
¡¡¡¡return - ERESTARTSYS;
¡¡}
¡¡//µÈ´ýÊý¾Ý¿É»ñµÃ£º¿ÉÄÜ×èÈû
¡¡if (wait_event_interruptible(outq, flag != 0))
¡¡{
¡¡¡¡return - ERESTARTSYS;
¡¡}
¡¡flag = 0;
¡¡//ÁÙ½ç×ÊÔ´·ÃÎÊ
¡¡if (copy_to_user(buf, &global_var, sizeof(int)))
¡¡{
¡¡¡¡up(&sem);
¡¡¡¡return - EFAULT;
¡¡}
¡¡//ÊÍ·ÅÐźÅÁ¿
¡¡up(&sem);
¡¡return sizeof(int);
}
¡¡¡¡¼´½»»»wait_event_interruptible(outq, flag != 0)ºÍdown_interruptible(&sem)µÄ˳Ðò£¬Õâ¸öÇý¶¯³ÌÐò½«±äµÃ²»¿ÉÔËÐС£Êµ¼ÊÉÏ£¬µ±Á½¸ö¿ÉÄÜÒª×èÈûµÄʼþͬʱ³öÏÖʱ£¬¼´Á½¸öwait_event»òdown°ÚÔÚÒ»ÆðµÄʱºò£¬½«±äµÃ·Ç³£Î£ÏÕ£¬ËÀËøµÄ¿ÉÄÜÐԺܴó£¬Õâ¸öʱºòÎÒÃÇÒªÌØ±ðÁôÒâËüÃǵijöÏÖ˳Ðò¡£µ±È»£¬ÎÒÃÇÓ¦¸Ã¾¡¿ÉÄܵرÜÃâÕâÖÖÇé¿öµÄ·¢Éú£¡
¡¡¡¡+»¹ÓÐÒ»¸öÓëÉ豸×èÈûÓë·Ç×èÈû·ÃÎÊϢϢÏà¹ØµÄÂÛÌ⣬¼´selectºÍpoll£¬selectºÍpollµÄ±¾ÖÊÒ»Ñù£¬Ç°ÕßÔÚBSD UnixÖÐÒýÈ룬ºóÕßÔÚSystem VÖÐÒýÈë¡£pollºÍselectÓÃÓÚ²éѯÉ豸µÄ״̬£¬ÒÔ±ãÓû§³ÌÐò»ñÖªÊÇ·ñÄܶÔÉ豸½øÐзÇ×èÈûµÄ·ÃÎÊ£¬ËüÃǶ¼ÐèÒªÉ豸Çý¶¯³ÌÐòÖеÄpollº¯ÊýÖ§³Ö¡£
¡¡¡¡Çý¶¯³ÌÐòÖÐpollº¯ÊýÖÐ×îÖ÷ÒªÓõ½µÄÒ»¸öAPIÊÇpoll_wait£¬ÆäÔÐÍÈçÏ£º
void poll_wait(struct file *filp, wait_queue_heat_t *queue, poll_table * wait);
¡¡¡¡poll_waitº¯ÊýËù×öµÄ¹¤×÷Êǰѵ±Ç°½ø³ÌÌí¼Óµ½wait²ÎÊýÖ¸¶¨µÄµÈ´ýÁÐ±í£¨poll_table£©ÖС£ÏÂÃæÎÒÃǸøglobalvarµÄÇý¶¯Ìí¼ÓÒ»¸öpollº¯Êý£º
static unsigned int globalvar_poll(struct file *filp, poll_table *wait)
{
¡¡unsigned int mask = 0;
¡¡poll_wait(filp, &outq, wait);
¡¡//Êý¾ÝÊÇ·ñ¿É»ñµÃ£¿
¡¡if (flag != 0)
¡¡{
¡¡¡¡mask |= POLLIN | POLLRDNORM; //±êʾÊý¾Ý¿É»ñµÃ
¡¡}
¡¡return mask;
}
¡¡¡¡ÐèҪ˵Ã÷µÄÊÇ£¬poll_waitº¯Êý²¢²»×èÈû£¬³ÌÐòÖÐpoll_wait(filp, &outq, wait)Õâ¾ä»°µÄÒâ˼²
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
£¨L2CAPÐÒé¼ò½é£¬L2CAPÔÚBlueZÖеÄʵÏÖÒÔ¼°L2CAP±à³Ì½Ó¿Ú£©
Ò»£ºL2CAPÐÒé¼ò½é£º
Logical Link Control and Adaptation Protocol(L2CAP)
Âß¼Á¬½Ó¿ØÖƺÍÊÊÅäÐÒé (L2CAP) ΪÉϲãÐÒéÌá¹©ÃæÏòÁ¬½ÓºÍÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬²¢Ìṩ¶àÐÒ鹦ÄܺͷָîÖØ×é²Ù×÷¡£L2CAP ³äÐíÉϲãÐÒéºÍÓ¦ÓÃÈí¼þ´«ÊäºÍ½ÓÊÕ×î´ó³¤¶ÈΪ 64K µÄ L2CAP Ê ......
²ÉÓÃglimpse¿ÉÒÔ¶ÔÔ´´úÂë½øÐÐË÷Òý£¬ÕâÑùÔÚ·±ÔӵĴúÂëÀïÃæ£¬¿ÉÒԺܿìµÄÕÒµ½¹Ø¼ü×Ö¡£
Õâ¸ö¹¤¾ß¾ÍÊÇglimpse¡£Ê¹Ó÷½·¨¾Í²»¶à˵ÁË¡£¿ÉÒÔ²égoogleÂ ^__^
²ÉÓÃteeÃüÁî¿ÉÒÔ½«glimpse²éÕÒ³öÀ´µÄÐÅϢת´æÎªÎļþ¡£
¾ÍÊÇÕâÑù£º
glimpse CONFIG_BOOTDELAY | tee bootdelay.txt
ÕâÑù¾Í²é³öÁËËùÓÐCONFI ......
/***********************************
*
*client.c
*
**********************************/
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<sy ......