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

[ת]linuxÉ豸ģÐÍ

Linux
2.6Äں˵ÄÒ»¸öÖØÒªÌØÉ«ÊÇÌṩÁËͳһµÄÄÚºËÉ豸ģÐÍ¡£Ëæ×ż¼ÊõµÄ²»¶Ï½ø²½£¬ÏµÍ³µÄÍØÆË½á¹¹Ô½À´Ô½¸´ÔÓ£¬¶ÔÖÇÄܵçÔ´¹ÜÀí¡¢ÈȲå°ÎÒÔ¼°plug and
playµÄÖ§³ÖÒªÇóÒ²Ô½À´Ô½¸ß£¬2.4ÄÚºËÒѾ­ÄÑÒÔÂú×ãÕâЩÐèÇó¡£ÎªÊÊÓ¦ÕâÖÖÐÎÊÆµÄÐèÒª£¬2.6Äں˿ª·¢ÁËȫеÄÉ豸ģÐÍ¡£
£±£® SysfsÎļþϵͳ
SysfsÎļþϵͳÊÇÒ»¸öÀàËÆÓÚprocÎļþϵͳµÄÌØÊâÎļþϵͳ£¬ÓÃÓÚ½«ÏµÍ³ÖеÄÉ豸×éÖ¯³É²ã´Î½á¹¹£¬²¢ÏòÓû§Ä£Ê½³ÌÐòÌṩÏêϸµÄÄÚºËÊý¾Ý½á¹¹ÐÅÏ¢¡£Æä¶¥²ãĿ¼Ö÷ÒªÓУº
BlockĿ¼£º°üº¬ËùÓеĿéÉ豸
DevicesĿ¼£º°üº¬ÏµÍ³ËùÓеÄÉ豸£¬²¢¸ù¾ÝÉ豸¹Ò½ÓµÄ×ÜÏßÀàÐÍ×éÖ¯³É²ã´Î½á¹¹
BusĿ¼£º°üº¬ÏµÍ³ÖÐËùÓеÄ×ÜÏßÀàÐÍ
DriversĿ¼£º°üÀ¨ÄÚºËÖÐËùÓÐÒÑ×¢²áµÄÉ豸Çý¶¯³ÌÐò
ClassĿ¼£ºÏµÍ³ÖеÄÉ豸ÀàÐÍ£¨ÈçÍø¿¨É豸£¬Éù¿¨É豸µÈ£©
£²£® Äں˶ÔÏó»úÖÆ¹Ø¼üÊý¾Ý½á¹¹
2.1 kobjectÄں˶ÔÏó
Kobject ÊÇLinux 2.6ÒýÈëµÄеÄÉ豸¹ÜÀí»úÖÆ£¬ÔÚÄÚºËÖÐÓÉstruct
kobject±íʾ¡£Í¨¹ýÕâ¸öÊý¾Ý½á¹¹Ê¹ËùÓÐÉ豸Ôڵײ㶼¾ßÓÐͳһµÄ½Ó¿Ú£¬kobjectÌṩ»ù±¾µÄ¶ÔÏó¹ÜÀí£¬Êǹ¹³ÉLinux
2.6É豸ģÐ͵ĺËÐĽṹ£¬ËüÓësysfsÎļþϵͳ½ôÃܹØÁª£¬Ã¿¸öÔÚÄÚºËÖÐ×¢²áµÄkobject¶ÔÏó¶¼¶ÔÓ¦ÓÚsysfsÎļþϵͳÖеÄÒ»¸öĿ¼¡£
Kobject½á¹¹¶¨ÒåΪ£º
struct
 kobject {
char
 
*
 k_name;    
//
 Ö¸ÏòÉ豸Ãû³ÆµÄÖ¸Õë
char
 name[KOBJ_NAME_LEN];   
//
 É豸Ãû³Æ
struct
 kref kref;    
//
 ¶ÔÏóÒýÓüÆÊý
struct
 list_head entry;   
//
 ¹Ò½Óµ½ËùÔÚksetÖÐÈ¥µÄµ¥Ôª
struct
 kobject 
*
 parent; 
//
 Ö¸Ïò¸¸¶ÔÏóµÄÖ¸Õë
struct
 kset 
*
 kset;    
//
 ËùÊôksetµÄÖ¸Õë
struct
 kobj_type 
*
 ktype;   
//
 Ö¸ÏòÆä¶ÔÏóÀàÐÍÃèÊö·ûµÄÖ¸Õë
struct
 dentry 
*
 dentry; 
//
 sysfsÎļþϵͳÖÐÓë¸Ã¶ÔÏó¶ÔÓ¦µÄÎļþ½Úµã·¾¶Ö¸Õë
};
ÆäÖеÄkrefÓò±íʾ¸Ã¶ÔÏóÒýÓõļÆÊý£¬ÄÚºËͨ¹ýkrefʵÏÖ¶ÔÏóÒýÓüÆÊý¹ÜÀí£¬ÄÚºËÌṩÁ½¸öº¯Êýkobject_get()¡¢kobject_put()·Ö±ðÓÃÓÚÔö¼ÓºÍ¼õÉÙÒýÓüÆÊý£¬µ±ÒýÓüÆÊýΪ0ʱ£¬ËùÓиöÔÏóʹÓõÄ×ÊÔ´½«±»ÊÍ·Å¡£
Ktype
ÓòÊÇÒ»¸öÖ¸Ïòkobj_type½á¹¹µÄÖ¸Õ룬±íʾ¸Ã¶ÔÏóµ


Ïà¹ØÎĵµ£º

linux mmapÇý¶¯ÊµÏÖ

ÔÚʵÏÖÇý¶¯³ÌÐòµÄmmapº¯Êýʱ£¬Òª×¢ÒâÓ³É䵨ַµÄת»»ÎÊÌ⣬¼û´úÂë¡£
¶¨ÒåÒ»¸öÉ豸½á¹¹Ì壺
struct leedriver
{
struct cdev cdev;
unsigned char mem[MEMSIZE];
};
ÕâÀïÃæÕâ¸öMEMSIZE£¬×îС¶¼ÒªÊÇ4096£¬ÒòΪÄÚ´æÓ³ÉäÊÇÒÔҳΪµ¥Î»µÄ¡£
ÔÚʵÏÖsimple_remap_mmapº¯Êýʱ£¬´úÂëÈçÏÂ
static int simple_remap_mmap(stru ......

fork compare to exec in linux c program

pid_t  pid=fork()
it has 3 situation for the return result pid
0  child
>0 parent process
<0 fork fail
fork create a new process  and it parent live alse when the child process had been created ......

Linux C ʵÏÖÏ̳߳Ø

×î½ü×öµÄһЩ¹¤×÷ÐèÒªÓõ½Ï̳߳ؼ¼Êõ£¬Òò´Ë²Î¿¼ÁËһЩ×ÊÁϺÍÊé¼®£¬Èç¡¶0bug c/c++ÉÌÓù¤³ÌÖ®µÀ¡·¡£
Ϊ´ËÔÚlinuxƽ̨ÉÏÓô¿cдÁËÒ»¸öÏ̳߳صÄʵÏÖ¡£
ÔÚ´ËÁгöÁËÔ­´úÂë¡£
Ö÷ÒªÓõ½µÄÊý¾Ý½á¹¹ÓÐ
1.struct  thread_pool_t    // thread pool µÄʵÏÖ´úÂë
2.struct thread_pool_token_t  &nb ......

linux date ÃüÁîÏê½â

linux date ÃüÁîÏê½â
 
ʹÓ÷½Ê½ :
date [-u] [-d datestr] [-s datestr]
[--utc] [--universal] [--date=datestr] [--set=datestr] [--help]
[--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
˵Ã÷ :
date ¿ÉÒÔÓÃÀ´ÏÔʾ»òÉ趨ϵͳµÄÈÕÆÚÓëʱ¼ä£¬ÔÚÏÔʾ·½Ã棬ʹÓÃÕß¿ÉÒÔÉ趨ÓûÏÔʾµÄ¸ñʽ£¬¸ñʽÉ趨Ϊһ¸ö¼Óº ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ