LinuxÉ豸ģÐÍ
¿´LDD3ÖÐÉ豸ģÐÍÒ»Õ£¬¾õµÃ˼άÓÐЩ»ìÂÒ¡£ÕâÀï´ÓÕûÌåµÄ½Ç¶ÈÀ´ÀíÀí˼·¡£
±¾ÎÄ´ÓËĸö·½ÃæÀ´×ܽáһЩÄÚÈÝ£º
1.µ×²ãÊý¾Ý½á¹¹£ºkobject,kset.
2.linuxÉ豸ģÐͲã´Î¹ØÏµ£ºbus_type,device,device_driver.
3.¼¯³É£ºPCIÉ豸Çý¶¯Ä£ÐÍʵÀý¼°É豸£¬É豸Çý¶¯×¢²áÔ´ÂëµÄ¼òµ¥·ÖÎö.
4.ÃæÏò¶ÔÏóµÄ˼ÏëÔÚlinuxÉ豸ģÐÍÖеÄÓ¦Ó÷ÖÎö.
Ò»¡¢µ×²ãÊý¾Ý½á¹¹£ºkobject,kset
ÏÈ˵˵ģÐ͵ÄÒâÒå:
×ÜÌåÀ´ËµÊÇΪÁËϵͳµØ¹ÜÀíËùÓÐÉ豸¡£
kobject
½áºÏÃæÏò¶ÔÏóµÄ˼ά¡£Õâ¸ökobjectÊôÓÚ×î»ù´¡µÄ½á¹¹£¬Ò²¾ÍÊÇ×î¸ß³éÏó²ã(ÓеãÏñjavaÖеÄCobjectÀà)¡£ÈκÎÒ»¸öÉ豸ģÐÍÈç×ÜÏߣ¬É豸£¬Çý¶¯¶¼ÊôÓÚÒ»¸ökobject ¡£ÔÚʵÏÖÉÏÕâÖÖÅÉÉú¹ØÏµ¾ÍÊÇÔڽṹÌåÖаüº¬Ò»¸ökobjectµÄ±äÁ¿¡£
Õâ¸öÔÚ²ã´ÎÉÏ´¦Àí×î¶¥²ãµÄkobject½á¹¹ÌṩÁËËùÓÐÄ£ÐÍÐèÒªµÄ×î»ù±¾µÄ¹¦ÄÜ£º
1 ÒýÓüÆÊý ÓÃÓÚÄÚºËά»¤Æä´æÔÚÓëÏûÍö
2 sysfs±íʾ ÿ¸ösys/ϵĶÔÏó¶ÔÓ¦×ÅÒ»¸ökobject¡£
3 ÈȰβåʼþ´¦Àí¡£ ´¦ÀíÉ豸µÄÈȰβåʼþ¡£
Kobjects ÔÚÄÚºËÖжÔÓ¦ÓÐÒ»Ì×ÉêÇ룬³õʼ»¯£¬Ìí¼Ó£¬×¢²á£¬¼ÆÊý²Ù×÷£¬ÊͷŵȺ¯Êý
struct kobject {
const char * k_name; Ãû
char name[KOBJ_NAME_LEN];
struct kref kref; ¼ÆÊý
struct list_head entry; ÓÃÓÚÁ¬½Óµ½Í¬ÀàkobjectsµÄÁ´±í
struct kobject * parent; ÓÃÓÚʵÏÖ²ã´Î£¬Ö¸ÏòÆä¸¸¶ÔÏó¡£
struct kset * kset; ÓÃÓÚʵÏÖ²ã´Î£¬ËùÊôµÄ¼¯ºÏ
struct kobj_type * ktype; Ö¸Ïò¶ÔÏóµÄÀàÐÍ¡£
struct dentry * dentry; ָʾÔÚsysfs ÖеÄĿ¼Ïî
wait_queue_head_t poll;
}; (linux 2.6.18)
Kset ºÍkobj_type struct kset {
struct subsystem * subsys; ÔÚ×îÐÂÄÚºËÖÐÒѾûÓÐsubsys¸ÅÄîÁË¡£Í³Ò»ÓÃksets
struct kobj_type * ktype; ÀàÐÍ¡£
struct list_head list; ͬһksetµÄÁ´±í
spinlock_t list_lock;
struct kobject kobj; ×ÔÉí
Ïà¹ØÎĵµ£º
´´½¨×ÀÃæÍ¼±ê
Ŀǰ½«ÍøÂçÓ¦ÓÃÀ©Õ¹µ½×ÀÃæÊÇÒ»¸öÇ÷ÊÆ£¬´æÔÚןܶà½â¾ö·½°¸£¬±¾ÎÄÒÔ Mozilla Prism ΪÀý£¬ÀàËÆµÄ·½·¨Í¬ÑùÊÊÓÃÓÚ Google Chrome ¡£
1. µ½ Mozilla Prism µÄÍøÕ¾ÉÏÏÂÔØ Prism£¬µã»÷ Download Now Ö®ºó»áÌáʾÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÒÔ Mozilla Firefox À©Õ¹µÄ·½Ê½£¬ÊʺÏÒѾ°²×°ÓÐ Firefox µÄÅóÓÑ£»Ò»Ö ......
ÎÒÕâÀï˵µÄioctlº¯ÊýÊÇÔÚÇý¶¯³ÌʽÀïµÄ£¬ÒòΪÎÒ²»ÖªµÀ¸üÓÐûÓбðµÄ³¡ºÏÓõ½ÁËioctl£¬
ËùÒԾ͹涨ÁËÎÒÃÇÌÖÂ۵ķ¶Î§¡£ÎªÊ²Ã´ÒªÐ´ÆªÎÄÕÂÄØ£¬ÊÇÒòΪÎÒǰһÕó×Ó±»ioctl¸ø¸ã»ì
ÁË£¬Õ⼸Ìì²ÅŪÃ÷°×Ëû£¬ÓÚÊÇÔÚÕâÀïÇåÀíÒ»ÏÂÍ·ÄÔ¡£
  ......
1.java.sun.com/j2se/1.4.2/download.html">http://java.sun.com/j2se/1.4.2/download.html ÏÂÔØÒ»¸öLinux PlatformµÄJDK£¬½¨ÒéÏÂÔØRPM×Ô½âѹ¸ñʽµÄ£¨RPM in self-extracting file£¬j2sdk-1_4_2_06-linux-i586-rpm.bin£©£»
2. ÉÏÔØµ½Linux·þÎñÆ÷ÉÏ£¬ÔÚshellÏÂÖ´ÐÐÃüÁ
[root@ ......
֮ǰÎÒÃÇÒѾ½²µ½ÓÃfork()À´´´½¨Ò»¸öнø³Ì£¬ÓÃexit()À´ÖÕÖ¹Ò»¸ö½ø³Ì¡£ÏÖÔÚÎÒÃǽ«ÂÔ΢ÉîÈëÁ˽âexit()Ö´ÐÐÖ®ºó·¢ÉúµÄÊÂÇé¡£
ÊÂʵÉÏ£¬exit()ÖÕÖ¹½ø³Ì²¢Ã»Óн«Æä³¹µ×Öսᣬ¶øÊǽ«Ò»¸öÕý³£µÄ½ø³Ì±ä³ÉÁËÒ»¸ö½©Ê¬½ø³Ì¡£¸Ã½©Ê¬½ø³Ì¼¸ºõ²»Õ¼ÓÃ×ÊÔ´£¬Ã»ÓпÉÖ´ÐеĴúÂ룬Ҳ²»Äܱ»µ÷¶È£¬½ö½öÖ»ÄÜÔÚ½ø³ÌÁбíÖÐ ......
wait(µÈ´ý×Ó½ø³ÌÖжϻò½áÊø)
±íÍ·Îļþ
#include<sys/types.h>
#include<sys/wait.h>
¶¨Ò庯Êý pid_t wait (int * status);
º¯Êý˵Ã÷
wait()»áÔÝʱֹͣĿǰ½ø³ÌµÄÖ´ÐÐ,Ö±µ½ÓÐÐźÅÀ´µ½»ò×Ó½ø³Ì½á
Êø¡£È ......