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

Linux Platform Device and Driver

    
´Ó
Linux 2.6
ÆðÒýÈëÁËÒ»Ì×еÄÇý¶¯¹ÜÀíºÍ×¢²á»úÖÆ :Platform_device
ºÍ Platform_driver
¡£
     Linux
Öд󲿷ֵÄÉ豸Çý¶¯£¬¶¼¿ÉÒÔʹÓÃÕâÌ×»úÖÆ ,
É豸ÓÃ
Platform_device
±íʾ£¬Çý¶¯ÓÃ
Platform_driver
½øÐÐ×¢²á¡£

     Linux platform driver
»úÖƺʹ«Í³µÄ device driver
»úÖÆ (
ͨ¹ý driver_register
º¯Êý½øÐÐ×¢²á )
Ïà±È£¬Ò»¸öÊ®·ÖÃ÷ÏÔµÄÓÅÊÆÔÚÓÚ
platform
»úÖƽ«É豸±¾ÉíµÄ×ÊÔ´×¢²á½øÄںˣ¬ÓÉÄÚºËͳһ¹ÜÀí£¬ÔÚÇý¶¯³ÌÐòÖÐʹÓÃÕâЩ×ÊԴʱͨ¹ý platform device
ÌṩµÄ±ê×¼½Ó¿Ú½øÐÐÉêÇ벢ʹÓá£ÕâÑùÌá¸ßÁËÇý¶¯ºÍ×ÊÔ´¹ÜÀíµÄ¶ÀÁ¢ÐÔ£¬²¢ÇÒÓµÓнϺõĿÉÒÆÖ²ÐԺͰ²È«ÐÔ (
ÕâЩ±ê×¼½Ó¿ÚÊÇ°²È«µÄ )
¡£ 
    Platform
»úÖƵı¾ÉíʹÓò¢²»¸´ÔÓ£¬ÓÉÁ½²¿·Ö×é³É£º platform_device
ºÍ platfrom_driver
¡£

   
ͨ¹ý Platform
»úÖÆ¿ª·¢·¢µ×²ãÇý¶¯µÄ´óÖÂÁ÷³ÌΪ :
¶¨Òå platform_device ->
×¢²á platform_device->
¶¨Òå platform_driver->
×¢²á platform_driver
¡£ 
   
Ê×ÏÈҪȷÈϵľÍÊÇÉ豸µÄ×ÊÔ´ÐÅÏ¢£¬ÀýÈçÉ豸µÄµØÖ·£¬ÖжϺŵȡ£

ÔÚ 2.6
ÄÚºËÖÐ platform
É豸ÓýṹÌå platform_device
À´ÃèÊö£¬¸Ã½á¹¹Ì嶨ÒåÔÚ
kernel\include\linux\platform_device.h
ÖУ¬
struct platform_device {
const char *
name;
u32 id;
struct device
dev;
u32
num_resources;
struct resource
* resource;
};
 
   
¸Ã½á¹¹Ò»¸öÖØÒªµÄÔªËØÊÇ resource
£¬¸ÃÔªËØ´æÈëÁË×îΪÖØÒªµÄÉ豸×ÊÔ´ÐÅÏ¢£¬¶¨ÒåÔÚ
kernel\include\linux\ioport.h
ÖУ¬

struct resource {
const char
*name;
unsigned long
start, end;
unsigned long
flags;
struct resource
*parent, *sibling, *child;
};
¶¨ÒåºÃÁË platform_device
½á¹¹Ìåºó¾Í¿ÉÒÔµ÷Óú¯Êý platform_add_devices
ÏòϵͳÖÐÌí¼Ó¸ÃÉ豸ÁË£¬Ö®ºó¿ÉÒÔµ÷ÓÃ
platform_device_register()
½øÐÐÉ豸ע²á¡£Òª×¢ÒâµÄÊÇ£¬ÕâÀïµÄ platform_device
É豸µÄ×¢²á¹ý³Ì±ØÐëÔÚÏàÓ¦É豸Çý¶¯¼ÓÔØ֮ǰ±»µ÷Ó㬼´Ö´ÐÐ platform_driver_register
֮ǰ ,
Ô­ÒòÊÇÒòΪÇý¶¯×¢²áʱÐèҪƥÅäÄÚºËÖÐËùÒÔÒÑ×¢²áµÄÉ豸Ãû¡£
ÔÚÇý¶¯³õʼ»¯º¯ÊýÖе÷Óú¯Êý platform_driver_


Ïà¹ØÎĵµ£º

ʵս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ÏÂɱ×Ó½ø³Ì£¨µ÷ÓÃkill£©

ÔÚlinuxÀïÃ棬fork()Ò»¸ö×Ó½ø³Ì£¬½á¹ûÔõô¶¼É±²»µô¡£ÓÉÓÚ²»ÊÇrootÓû§£¬Ê¹ÓÃkill -9 pid£¬Ò²Ã»Óá£
ÔÚps -awtµÄʱºò×ÜÊÇÄÜ¿´µ½ÄǸö×Ó½ø³Ì¡£ÎÒÔÚ×Ó½ø³ÌÀïÃæÆðÁ˸öshell¡£
ºóÀ´googleÁËһϣ¬·¢ÏÖÒªµ÷ÓÃwaitpid²Å¿ÉÒÔ¡£
Õâ¸öÊÇËùνµÄzombie£¨½©Ê¬½ø³Ì£©
ÒýÓÃÒ»¶Î£º
ÔÚfork()/execve()¹ý³ÌÖУ¬¼ÙÉè×Ó½ø³Ì½áÊøʱ¸¸½ø³ÌÈÔ ......

01 ʲôÊÇLinux Äñ»ù

POSIX
ÊÇÒ»ÖÖ±ê×¼¹æ·¶£¬Ö÷ÒªÕë¶ÔÔÚ Unix
²Ù×÷ϵͳÉÏÃæÅܵijÌÐòÀ´½øÐй淶¡£ ÈôÄãµÄ²Ù×÷ϵͳ·ûºÏ POSIX £¬Ôò·ûºÏ POSIX µÄ³ÌÐò¾Í¿ÉÒÔÔÚÄãµÄ²Ù×÷ϵͳÉÏÃæÔË×÷¡£ Linux
ÓÉÓÚÖ§³Ö POSIX £¬Òò´ËºÜ¶à Unix ÉϵijÌÐò¿ÉÒÔÖ±½ÓÔÚ Linux ÉÏÔË×÷£¬ Òò´Ë³ÌÐòµÄÒÆÖ²Ï൱¼òÒ×£¡Ò²Èôó¼ÒÈÝÒ×ת»»Æ½Ì¨£¬ÌáÉý
Linux µÄʹÓÃÂÊ¡£
Çý¶¯Óë ......

linux·þÎñ´óÈ«

Òò¹¤×÷ÐèÒª¾­³£Òª²éÕÒÕâЩ·þÎñÓÃ;£¬Òò´Ë½«ÍøÉϵÄһЩÁбí½øÐÐÏàÓ¦ÊÕ¼¯ÕûÀí£¬·½±ã²éÔÄ
²»Òª¹Ø±ÕÒÔÏ·þÎñ£¨³ý·ÇÄãÓгä×ãµÄÀíÓÉ£©£º
acpid, haldaemon, messagebus, klogd, network, syslogd
ÇëÈ·¶¨Ð޸ĵÄÊÇÔËÐ춱ð 3 ºÍ 5¡£
NetworkManager, NetworkManagerDispatcher
       &nbs ......

[zz]dzÎöLinuxÏÂcoreÎļþ

dzÎöLinuxÏÂcoreÎļþ
́Ȼ (zhanghua@eyou.net)
2006 Äê 8 ÔÂ 02 ÈÕ
 
 
 
 
µ±ÎÒÃǵijÌÐò±ÀÀ£Ê±£¬ÄÚºËÓпÉÄܰѸóÌÐòµ±Ç°ÄÚ´æÓ³Éäµ½coreÎļþÀ·½±ã³ÌÐòÔ±ÕÒµ½³ÌÐò³öÏÖÎÊÌâµÄµØ·½¡£×î³£³öÏֵģ¬¼¸ºõËùÓÐC³ÌÐòÔ±¶¼³öÏÖ¹ýµÄ´íÎó¾ÍÊÇ“¶Î´íÎó”ÁË¡£Ò²ÊÇ×îÄѲé³öÎÊÌâÔ­ÒòµÄÒ»¸ö´íÎó¡£Ï ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ