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µÈÐÒé ......
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
ÎÄÕÂÑ¡È¡µÄÀý×ӷdz£¼òµ¥£¬ÉÏÊÖÈÝÒ×£¬Ö»ÊÇΪÁ˽²Êö¾²Ì¬Ó붯̬Á´½Ó¿âµÄÉú³ÉºÍÁ´½Ó¹ý
³Ì£¬»¹ÓÐËûÃÇÖ®¼äµÄÇø±ð¡£ÒÔÏÂÀý×ÓÔÚ gcc 4.1.1 ÏÂ˳Àûͨ¹ý¡£
ÎļþÔ¤ÀÀ
ÎļþĿ¼Ê÷ÈçÏ£¬ÈçÄãËù¼û£¬·Ç³£¼òµ¥¡£
libtest/
|-- lt.c
|-- lt.h
`-- test. ......
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <s ......
ϵͳҪÇó£º
¡¡¡¡Äڴ棺ÍƼö1G
¡¡¡¡Swap·ÖÇø£ºÉèΪÄÚ´æµÄ2±¶
¡¡¡¡/tmp´ÅÅ̿ռ䣺400MBÒÔÉÏÈý
¡¡¡¡´ÅÅ̿ռ䣺Èí¼þ3.5G Êý¾Ý1.2G
¡¡¡¡ËùÐèÈí¼þ£º
¡¡¡¡SuSE Linux10 for x86
¡¡¡¡Oracle database 10gR2 for Linux32
¡¡¡¡Orarun-1.8-109.15.i586.rpmÈí¼þ°ü£¬¿ÉÒÔ´Óhttp://Ftp.novell.com/partners/Oracle/sels-9ÏÂÔØ
&n ......