LinuxÉ豸Çý¶¯³ÌÐò¿ª·¢Á÷³ÌʾÀý
ÒÔϵÄһЩÎÄ×ÖÖ÷ÒªÀ´Ô´ÓÚkhg£¬johnsonmµÄWrite linux device driver£¬Brennan's Guide to Inline Assembly£¬The Linux A-Z£¬»¹ÓÐÇ廪BBSÉϵÄÓйØdevice driverµÄһЩ×ÊÁÏ. ÕâЩ×ÊÁÏÓеÄÒѾ¹ýʱ£¬ÓеϹÓÐһЩ´íÎó£¬ÎÒÒÀ¾Ý×Ô¼ºµÄÊÔÑé½á¹û½øÐÐÁËÐÞÕý.
Ò»¡¢Linux device driver µÄ¸ÅÄî
ϵͳµ÷ÓÃÊDzÙ×÷ϵͳÄں˺ÍÓ¦ÓóÌÐòÖ®¼äµÄ½Ó¿Ú£¬É豸Çý¶¯³ÌÐòÊDzÙ×÷ϵͳÄں˺ͻúÆ÷Ó²¼þÖ®¼äµÄ½Ó¿Ú.É豸Çý¶¯³ÌÐòΪӦÓóÌÐòÆÁ±ÎÁËÓ²¼þµÄϸ½Ú£¬ÕâÑùÔÚÓ¦ÓóÌÐò¿´À´£¬Ó²¼þÉ豸ֻÊÇÒ»¸öÉ豸Îļþ£¬ Ó¦ÓóÌÐò¿ÉÒÔÏó²Ù×÷ÆÕͨÎļþÒ»Ñù¶ÔÓ²¼þÉ豸½øÐвÙ×÷.É豸Çý¶¯³ÌÐòÊÇÄں˵ÄÒ»²¿·Ö£¬ËüÍê³ÉÒÔÏµĹ¦ÄÜ:
1.¶ÔÉ豸³õʼ»¯ºÍÊÍ·Å.
2.°ÑÊý¾Ý´ÓÄں˴«Ë͵½Ó²¼þºÍ´ÓÓ²¼þ¶ÁÈ¡Êý¾Ý.
3.¶ÁȡӦÓóÌÐò´«Ë͸øÉ豸ÎļþµÄÊý¾ÝºÍ»ØËÍÓ¦ÓóÌÐòÇëÇóµÄÊý¾Ý.
4.¼ì²âºÍ´¦ÀíÉ豸³öÏֵĴíÎó.
ÔÚLinux²Ù×÷ϵͳÏÂÓÐÁ½ÀàÖ÷ÒªµÄÉ豸ÎļþÀàÐÍ£¬Ò»ÖÖÊÇ×Ö·ûÉ豸£¬ÁíÒ»ÖÖÊÇ¿éÉ豸.×Ö·ûÉ豸ºÍ¿éÉ豸µÄÖ÷񻂿±ðÊÇ:ÔÚ¶Ô×Ö·ûÉ豸·¢³ö¶Á/дÇëÇóʱ£¬Êµ¼ÊµÄÓ²¼þI/OÒ»°ã¾Í½ô½Ó×Å·¢ÉúÁË£¬¿éÉ豸Ôò²»È»£¬ËüÀûÓÃÒ»¿éϵͳÄÚ´æ×÷»º³åÇø£¬µ±Óû§½ø³Ì¶ÔÉ豸ÇëÇóÄÜÂú×ãÓû§µÄÒªÇ󣬾ͷµ»ØÇëÇóµÄÊý¾Ý£¬Èç¹û²»ÄÜ£¬¾Íµ÷ÓÃÇëÇóº¯ÊýÀ´½øÐÐʵ¼ÊµÄI/O²Ù×÷.¿éÉ豸ÊÇÖ÷ÒªÕë¶Ô´ÅÅ̵ÈÂýËÙÉ豸Éè¼ÆµÄ£¬ÒÔÃâºÄ·Ñ¹ý¶àµÄCPUʱ¼äÀ´µÈ´ý.
ÒѾÌáµ½£¬Óû§½ø³ÌÊÇͨ¹ýÉ豸ÎļþÀ´Óëʵ¼ÊµÄÓ²¼þ´ò½»µÀ.ÿ¸öÉ豸Îļþ¶¼¶¼ÓÐÆäÎļþÊôÐÔ(c/b)£¬ÁíÍâÿ¸öÎļþ¶¼ÓÐÁ½¸öÉ豸ºÅ£¬µÚÒ»¸öÊÇÖ÷É豸ºÅ£¬±êʶÇý¶¯³ÌÐò£¬µÚ¶þ¸öÊÇ´ÓÉ豸ºÅ£¬±êʶʹÓÃͬһ¸öÉ豸Çý¶¯³ÌÐòµÄ²»Í¬µÄÓ²¼þÉ豸£¬±ÈÈçÓÐÁ½¸öÈíÅÌ£¬¾Í¿ÉÒÔÓôÓÉ豸ºÅÀ´Çø·ÖËûÃÇ¡£É豸ÎļþµÄµÄÖ÷É豸ºÅ±ØÐëÓëÉ豸Çý¶¯³ÌÐòÔڵǼÇʱÉêÇëµÄÖ÷É豸ºÅÒ»Ö£¬·ñÔòÓû§½ø³Ì½«ÎÞ·¨·ÃÎʵ½Çý¶¯³ÌÐò.¡£
×îºó±ØÐëÌáµ½µÄÊÇ£¬ÔÚÓû§½ø³Ìµ÷ÓÃÇý¶¯³ÌÐòʱ£¬ÏµÍ³½øÈëºËÐÄ̬£¬Õâʱ²»ÔÙÊÇÇÀÏÈʽµ÷¶È.Ò²¾ÍÊÇ˵£¬ÏµÍ³±ØÐëÔÚÄãµÄÇý¶¯³ÌÐòµÄ×Óº¯Êý·µ»Øºó²ÅÄܽøÐÐÆäËûµÄ¹¤×÷.Èç¹ûÄãµÄÇý¶¯³ÌÐòÏÝÈëËÀÑ»·£¬²»ÐÒµÄÊÇÄãÖ»ÓÐÖØÐÂÆô¶¯»úÆ÷ÁË£¬È»ºó¾ÍÊÇÂþ³¤µÄfsck.//hehe ¡£
¡¡¶þ¡¢ÈçºÎ±àдLinux²Ù×÷ϵͳϵÄÉ豸Çý¶¯³ÌÐò
ʵÀýÆÊÎö
ÎÒÃÇÀ´Ð´Ò»¸ö×î¼òµ¥µÄ×Ö·ûÉ豸Çý¶¯³ÌÐò¡£ËäÈ»ËüʲôҲ²»×ö£¬µ«ÊÇͨ¹ýËü¿ÉÒÔÁ˽âLinuxµÄÉ豸Çý¶¯³ÌÐòµÄ¹¤×÷ÔÀí.°ÑÏÂÃæµÄC´úÂëÊäÈë»úÆ÷£¬Äã¾Í»á»ñµÃÒ»¸öÕæÕýµÄÉ豸Çý¶¯³ÌÐò.²»¹ýÎ
Ïà¹ØÎĵµ£º
free_bootmem()Õâ¸öº¯ÊýÊÇϵͳÆô¶¯³õÆÚÄÚ´æÊͷŵĺËÐĺ¯Êý£¬ÎÒÃÇÀ´¿´¿´ËüµÄ´úÂë¡£
void __init free_bootmem (unsigned long addr, unsigned long size)//addrÊÇÒªÊͷŵÄÎïÀíÆðʼµØÖ·£¬sizeÊÇÒªÊͷſռäµÄ´óС¡£
{
free_bootmem_core(NODE_DATA(0)->bdata, addr, size);//Ö±½ ......
³ö´¦£ºhttp://bbs.java.ccidnet.com
¹Ò½ÓÃüÁî(mount)
¡¡¡¡Ê×ÏÈ£¬½éÉÜһϹҽÓ(mount)ÃüÁîµÄʹÓ÷½·¨£¬mountÃüÁî²ÎÊý·Ç³£¶à£¬ÕâÀïÖ÷Òª½²Ò»Ï½ñÌìÎÒÃÇÒªÓõ½µÄ¡£
¡¡¡¡ÃüÁî¸ñʽ£º
¡¡¡¡mount [-t vfstype] [-o options] device dir
¡¡¡¡ÆäÖУº
¡¡¡¡1.-t vfstype Ö¸¶¨ÎļþϵͳµÄÀàÐÍ£¬Í¨³£²»±ØÖ¸¶¨¡£mount »á×Ô¶¯Ñ¡ÔñÕýÈ· ......
1£¬ÏÔÖøÓ°ÏìϵͳÐÔÄܵÄ4ÖÖ×ÊÔ´
(1),CPUʱ¼ä
(2),ÄÚ´æ
(3),Ó²ÅÌI/O
(4),ÍøÂçI/O
2£¬·ÖÎöCPUʹÓÃÇé¿ö
ʹÓÃvmstat²É¼¯CPUµÄÐÔÄÜÆ¿¾±
[root@local]# vmstat 2
procs -----------memory---------- ---swap-- -----io-- ......
×î½ü¶ÔLinuxµÄÏ߳̽ӿڽøÐÐÁËЩ×ܽᣬҲ²Î¿¼ÁËÍøÂçÉÏÐÖµÜÃǵÄһЩ×ÊÁÏ£¬×Ô¼ºÍ¬Ê±Ò²Ð´ÁËЩ³ÌÐò½øÐвâÊÔ£¬ÏȰѲο¼µÄ
×ÊÁÏÁгöÀ´°É
http://blog.mcuol.com/User/liuzhilii521/Article/12738_1.htm
ÏÂÃæÊÇÎÒµÄһЩÀí½â£º
pthread_key_create(pthread_key_t *key,void (*destructor)(void*))
destructorÕâ¸ö»Øµ÷º¯ÊýÔÚÏß³Ì ......