LinuxÉ豸 £¨×ª£©
5.3.2 É豸ÀàÐÍ·ÖÀà
×ÝÀÀlinux/driversĿ¼£¬´ó¸Å»¹ÓÐ35¸öÒÔÉϵÄ×ÓĿ¼£¬Ã¿¸ö×ÓĿ¼»ù±¾ÉϾʹú±íÁËÒ»ÖÖÉ豸Çý¶¯£¬ÓÐatm¡¢block¡¢char¡¢misc¡¢input¡¢net¡¢usb¡¢sound¡¢videoµÈ¡£ÕâÀïÖ»ÃèÊöÔÚǶÈëʽϵͳÀïÃæÓõÃ×îΪ¹ã·ºµÄ3ÖÖÉ豸¡£
1£®×Ö·ûÉ豸£¨char device£©
×Ö·ûÉ豸ÊÇLinux×î¼òµ¥µÄÉ豸£¬¿ÉÒÔÏñÎļþÒ»Ñù·ÃÎÊ¡£³õʼ»¯×Ö·ûÉ豸ʱ£¬ËüµÄÉ豸Çý¶¯³ÌÐòÏòLinuxµÇ¼Ç£¬²¢ÔÚ×Ö·ûÉ豸ÏòÁ¿±íÖÐÔö¼ÓÒ»¸ödevice_structÊý¾Ý½á¹¹ÌõÄ¿£¬Õâ¸öÉ豸µÄÖ÷É豸±êʶ·ûÓÃ×öÕâ¸öÏòÁ¿±íµÄË÷Òý¡£Ò»¸öÉ豸µÄÖ÷É豸±êʶ·ûÊǹ̶¨µÄ¡£chrdevsÏòÁ¿±íÖеÄÿһ¸öÌõÄ¿£¬Ò»¸ödevice_structÊý¾Ý½á¹¹£¬°üÀ¨Á½¸öÔªËØ£ºÒ»¸öµÇ¼ÇÉ豸Çý¶¯³ÌÐòÃû³ÆµÄÖ¸ÕëºÍÒ»¸öÖ¸ÏòÒ»×éÎļþ²Ù×÷µÄÖ¸Õë¡£¿ÉÒԲο¼µÄ´úÂëÊÇinclude/linux/ major.h¡£
Ò»°ãÀ´ËµÏñÊó±ê¡¢´®¿Ú¡¢¼üÅ̵ÈÉ豸¶¼ÊôÓÚ×Ö·ûÉ豸¡£
2£®¿éÉ豸£¨block device£©
¿éÉ豸ÊÇÎļþϵͳµÄÎïÖÊ»ù´¡£¬ËüÒ²¿ÉÒÔÏñÎļþÒ»Ñù±»·ÃÎÊ¡£LinuxÓÃblkdevsÏòÁ¿±íά»¤ÒѾµÇ¼ÇµÄ¿éÉ豸Îļþ¡£ËüÏñchrdevsÏòÁ¿±íÒ»Ñù£¬Ê¹ÓÃÉ豸µÄÖ÷É豸ºÅ×÷ΪË÷Òý¡£ËüµÄÌõÄ¿Ò²ÊÇdevice_structÊý¾Ý½á¹¹¡£Óë×Ö·ûÉ豸²»Í¬µÄÊÇ£¬¿éÉ豸·ÖΪSCSIÀàºÍIDEÀà¡£ÏòLinuxÄں˵ǼDz¢ÏòºËÐÄÌṩÎļþ²Ù×÷¡£Ò»ÖÖ¿éÉ豸ÀàµÄÉ豸Çý¶¯³ÌÐòÏòÕâÖÖÀàÌṩºÍÀàÏà¹ØµÄ½Ó¿Ú¡£¿ÉÒԲο¼µÄ´úÂëÊÇfs/devices.c¡£
ÿһ¸ö¿éÉ豸Çý¶¯³ÌÐò±ØÐëÌṩÆÕͨµÄÎļþ²Ù×÷½Ó¿ÚºÍ¶ÔÓÚbuffer cacheµÄ½Ó¿Ú¡£Ã¿Ò»¸ö¿éÉ豸Çý¶¯³ÌÐòÌî³äblk_devÏòÁ¿±íÖеÄblk_dev_structÊý¾Ý½á¹¹¡£´ËÏòÁ¿±íµÄË÷ÒýÊÇÉ豸µÄÖ÷É豸ºÅ¡£ÆäÖÐblk_dev_structÊý¾Ý½á¹¹°üÀ¨Ò»¸öÇëÇóÀý³ÌµÄµØÖ·ºÍÒ»¸öÖ¸Õ룬ָÏòÒ»¸örequestÊý¾Ý½á¹¹µÄÁÐ±í£¬Ã¿Ò»¸ö¶¼±í´ïbuffer cacheÏòÉ豸¶Á/дһ¿éÊý¾ÝµÄÒ»¸öÇëÇó¡£
¿ÉÒԲο¼µÄÔ´´úÂëÊÇdrivers/block/ll_rw_blk.cºÍinclude/linux/blkdev.h¡£
µ±buffer cache´ÓÒ»¸öÒѵǼǵÄÉ豸¶Á/дһ¿éÊý¾Ý£¬»òÕßÏ£Íû¶Á¡¢Ð´Ò»¿éÊý¾Ýµ½ÆäËûλÖÃʱ£¬¾ÍÔÚblk_dev_structÖÐÔö¼ÓÒ»¸örequestÊý¾Ý½á¹¹¡£Ã¿¸örequestÊý¾Ý½á¹¹¶¼ÓÐÒ»¸öÖ¸ÏòÒ»¸ö»ò¶à¸öbuffer_headÊý¾Ý½á¹¹µÄÖ¸Õ룬ÿһ¸ö¶¼ÊǶÁ/дһ¿éÊý¾ÝµÄÇëÇó¡£Èç¹ûbuffer_headÊý¾Ý½á¹¹±»Ëø¶¨£¨buffer_cache£©£¬¿ÉÄÜ»áÓÐÒ»¸ö½ø³ÌÔڵȴýÕâ¸ö»º³åÇøµÄ×èÈû½ø³ÌÍê³É¡£Ã¿Ò»¸örequestÊý¾Ý½á¹¹¶¼ÊÇ´Óall_request±íÖзÖÅäµÄ¡£Èç¹ûrequestÔö¼Óµ½¿ÕµÄrequestÁбíÖУ¬¾Íµ÷ÓÃÇý¶¯³ÌÐòµÄrequestº¯Êý´¦ÀíÕâ¸örequest¶ÓÁУ¬·ñÔòÇý¶¯³ÌÐòÖ»ÊǼòµ¥µØ´¦Àírequest¶ÓÁÐÖеÄÿһ¸öÇëÇó¡£
¿éÉ豸Çý¶¯³ÌÐòºÍ×Ö·û
Ïà¹ØÎĵµ£º
from: http://cc.byexamples.com/20070520/tap-the-interrupt-signal/
When you hit control+c, you are actually send a SIGINT ( Interrupt signal ) to your program. By default, your program will be terminated after receiving SIGINT. But you can change the way of handling Interrupt signal.
Some of the a ......
probeÊÇusb×Óϵͳ×Ô¶¯µ÷ÓõÄÒ»¸öº¯Êý£¬ÓÐUSBÉ豸½Óµ½Ó²¼þ¼¯ÏßÆ÷ʱ£¬usb×Óϵͳ»á¸ù¾Ýproduction IDºÍvendor IDµÄ×éºÏ»òÕßÉ豸µÄclass¡¢subclass¸úprotocolµÄ×éºÏÀ´Ê¶±ðÉ豸µ÷ÓÃÏàÓ¦Çý¶¯³ÌÐòµÄprobe£¨Ì½²â£©º¯Êý£¬¶ÔÓÚskeletonÀ´Ëµ£¬¾ÍÊÇskel_probe¡£ÏµÍ³»á´«µÝ¸ø̽²âº¯ÊýÒ»¸öusb_interface *¸úÒ»¸östruct usb_device_id *×÷Î ......
1. vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=example.com
GATEWAY=192.168.0.1
NDS1=219.150.32.132 // dns ·þÎñÆ÷µØÖ·
2. vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:15:E9:B1:32:AF
BOOTPROTO=static
IPADDR=192.168.0.188
NETMASK=255. ......
LinuxÄÚºËÖÐÓÃÓÚͬ²½µÄ¼¸ÖÖ»úÖƼ¯ÖÐÆðÀ´·ÖÎö£¬Ç¿µ÷ÁËËüÃÇÖ®¼äÔÚʵÏÖºÍʹÓÃÉϵIJ»Í¬¡£
¡¡¡¡Í¬²½Í¨³£ÊÇΪÁË´ïµ½¶àÏß³ÌÐͬµÄÄ¿µÄ¶øÉè¼ÆµÄÒ»ÖÖ»úÖÆ£¬Í¨³£°üº¬Òì²½ÐźŻúÖƺͻ¥³â»úÖÆ×÷ΪÆäʵÏֵĵײ㡣ÔÚLinux 2.4ÄÚºËÖÐÒ²ÓÐÏàÓ¦µÄ¼¼ÊõʵÏÖ£¬°üÀ¨ÐźÅÁ¿¡¢×ÔÐýËø¡¢Ô×Ó²Ù×÷ºÍµÈ´ý¶ÓÁУ¬ÆäÖÐÔ×Ó²Ù×÷ºÍµÈ´ý¶ÓÁÐÓÖÊÇʵÏÖÐźÅÁ¿µÄ ......
Linux²é¿´Ó²¼þÐÅÏ¢ÃüÁî
1.²é¿´CPUÐÅÏ¢
cat /proc/cpuinfo
2.²é¿´ÄÚ´æÐÅÏ¢
cat /proc/meminfo
free
vmstat
3.²é¿´Ó²ÅÌÐÅÏ¢
fdisk -l
df -lh
4.²é¿´Äں˰汾ÐÅÏ¢
cat /proc/version
uname -r
lsb_release -a
5.²é¿´ÎļþÕ¼Óÿռä
du
6.²é¿´ÏµÍ³ÐÅÏ¢
dmesg
7.²é¿´¶Ë¿ÚÐÅÏ¢
netstat
8.²é¿´32λ»¹ÊÇ64λ
ge ......