Linux USBÇý¶¯¿ò¼Ü·ÖÎöÏÂ
probeÊÇusb×Óϵͳ×Ô¶¯µ÷ÓõÄÒ»¸öº¯Êý£¬ÓÐUSBÉ豸½Óµ½Ó²¼þ¼¯Ï߯÷ʱ£¬usb×Óϵͳ»á¸ù¾Ýproduction IDºÍvendor IDµÄ×éºÏ»òÕßÉ豸µÄclass¡¢subclass¸úprotocolµÄ×éºÏÀ´Ê¶±ðÉ豸µ÷ÓÃÏàÓ¦Çý¶¯³ÌÐòµÄprobe£¨Ì½²â£©º¯Êý£¬¶ÔÓÚskeletonÀ´Ëµ£¬¾ÍÊÇskel_probe¡£ÏµÍ³»á´«µÝ¸øÌ½²âº¯ÊýÒ»¸öusb_interface *¸úÒ»¸östruct usb_device_id *×÷Ϊ²ÎÊý¡£ËûÃÇ·Ö±ðÊǸÃUSBÉ豸µÄ½Ó¿ÚÃèÊö£¨Ò»°ã»áÊǸÃÉ豸µÄµÚ0ºÅ½Ó¿Ú£¬¸Ã½Ó¿ÚµÄĬÈÏÉèÖÃÒ²ÊǵÚ0ºÅÉèÖ㩸úËüµÄÉ豸IDÃèÊö£¨°üÀ¨Vendor ID¡¢Production IDµÈ£©¡£probeº¯Êý±È½Ï³¤£¬ÎÒÃÇ·Ö¶ÎÀ´·ÖÎöÕâ¸öº¯Êý£º
dev->udev = usb_get_dev(interface_to_usbdev(interface));
dev->interface = interface;
ÔÚ³õʼ»¯ÁËһЩ×ÊÔ´Ö®ºó£¬¿ÉÒÔ¿´µ½µÚÒ»¸ö¹Ø¼üµÄº¯Êýµ÷Ó×—interface_to_usbdev¡£ËûͬuoÒ»¸öusb_interfaceÀ´µÃµ½¸Ã½Ó¿ÚËùÔÚÉ豸µÄÉ豸ÃèÊö½á¹¹¡£±¾À´£¬ÒªµÃµ½Ò»¸öusb_deviceÖ»ÒªÓÃinterface_to_usbdev¾Í¹»ÁË£¬µ«ÒòΪҪÔö¼Ó¶Ô¸Ãusb_deviceµÄÒýÓüÆÊý£¬ÎÒÃÇÓ¦¸ÃÔÚ×öÒ»¸öusb_get_devµÄ²Ù×÷£¬À´Ôö¼ÓÒýÓüÆÊý£¬²¢ÔÚÊÍ·ÅÉ豸ʱÓÃusb_put_devÀ´¼õÉÙÒýÓüÆÊý¡£ÕâÀïÒª½âÊ͵ÄÊÇ£¬¸ÃÒýÓüÆÊýÖµÊǶԸÃusb_deviceµÄ¼ÆÊý£¬²¢²»ÊǶԱ¾Ä£¿éµÄ¼ÆÊý£¬±¾Ä£¿éµÄ¼ÆÊýÒªÓÉkrefÀ´Î¬»¤¡£ËùÒÔ£¬probeÒ»¿ªÊ¼¾ÍÓгõʼ»¯kref¡£ÊÂʵÉÏ£¬kref_init²Ù×÷²»µ¥Ö»³õʼ»¯kref£¬»¹½«ÆäÖÃÉè³É1¡£ËùÒÔÔÚ³ö´í´¦Àí´úÂëÖÐÓÐkref_put£¬Ëü°ÑkrefµÄ¼ÆÊý¼õ1£¬Èç¹ûkref¼ÆÊýÒѾΪ0£¬ÄÇôkref»á±»ÊÍ·Å¡£kref_putµÄµÚ¶þ¸ö²ÎÊýÊÇÒ»¸öº¯ÊýÖ¸Õ룬ָÏòÒ»¸öÇåÀíº¯Êý¡£×¢Ò⣬¸ÃÖ¸Õë²»ÄÜΪ¿Õ£¬»òÕßkfree¡£¸Ãº¯Êý»áÔÚ×îºóÒ»¸ö¶ÔkrefµÄÒýÓÃÊÍ·Åʱ±»µ÷Óã¨Èç¹ûÎÒµÄÀí½â²»×¼È·£¬ÇëÖ¸Õý£©¡£ÏÂÃæÊÇÄÚºËÔ´ÂëÖеÄÒ»¶Î×¢Êͼ°´úÂ룺
/**
* kref_put - decrement refcount for object.
* @kref: object.
* @release: pointer to the function that will clean up the object when the
* last reference to the object is released.
* This pointer is required, and it is not acceptable to pass kfree
* in as this function.
*
* Decrement the refcount, and if 0, call release().
* Return 1 if the object was removed, otherwise return 0. Beware
Ïà¹ØÎĵµ£º
LinuxʹÓôÓ1970Äê1ÔÂ1ÈÕ0ʱ0·Ö0ÃëÆðµ½¿ª»úʱ¾¹ýµÄÃëÊý×÷Ϊ¿ª»úʱ¼ä, ÊÇÔÚmain.cºÍmktime.cÖнøÐгõʼ»¯µÄ.
1. linux/init/main.c
/*
* read current time from CMOS.
* ·ÃÎÊCMOSÐèҪͨ¹ý¶Ë¿Ú0x70, 0x71½øÐÐ.
* ¶ÁÊý¾Ýʱ,ÏÈÓÃOUTÖ¸ÁîÏò0x70·¢ËÍÒª¶ÁÈ¡×Ö½ÚµÄÆ«ÒÆÎ»ÖÃÖµ, È»ºóÓÃINÖ¸Áî´Ó0x71¶ÁÊý¾Ý. ......
ssh³£ÓÃÃüÁî
Ŀ¼£º
1. Basic Instructions /»ù±¾Ö¸Áî
2. wget /ÏÂÔØ¹¤¾ß
3. Crontab /¶¨Ê±ÈÎÎñ
4. tar/tar.gz /ѹËõÎļþ
5. vi /±à¼Æ÷
1. Basic Instructions»ù±¾²Ù×÷ÃüÁî
ͨ³£À´Ëµ£¬Ê¹ÓÃ"$[Instructions] --help"¿ÉÒÔ»ñµÃÒÔϸ÷¸öÃüÁî[instructions]µÄ°ïÖú£¬°üº¬Æä²ÎÊýÁбíµÄ¶¨Òå¡£
-ls Áгöµ±Ç°Îļþ¼Ð ......
ʹÓÃvmstatÃüÁîÀ´²ì¿´ÏµÍ³×ÊÔ´Çé¿ö
ÔÚÃüÁîÐз½Ê½Ï£¬ÈçºÎ²é¿´CPU¡¢ÄÚ´æµÄʹÓÃÇé¿ö£¬ÍøÂçÁ÷Á¿ºÍ´ÅÅÌI/O£¿
Q: ÔÚÃüÁîÐз½Ê½Ï£¬ÈçºÎ²é¿´CPU¡¢ÄÚ´æµÄʹÓÃÇé¿ö£¬ÍøÂçÁ÷Á¿ºÍ´ÅÅÌI/O£¿
A: ÔÚÃüÁîÐз½Ê½Ï£¬
1. ²é¿´CPUʹÓÃÇé¿öµÄÃüÁî
""ÿ5ÃëË¢ÐÂÒ»´Î£¬×îÓÒ²àÓÐCPUµÄÕ¼ÓÃÂʵÄÊý¾Ý
$ vmstat 5
""top È»ºó°´Shift+P£¬°´ÕÕ½ ......
1.ϵͳºÍƽ̨ÊìϤ
ÔÚÒ»¸öÐÂµÄÆ½Ì¨ÉÏ¿ª·¢»òÕßÒÆÖ²Ò»¿îÈí¼þµÄʱºò£¬Ê×ÏÈÓ¦¸Ã³ä·Öƽ̨»òÕß
²Ù×÷ϵͳµÄ¸÷ÖÖÊôÐÔ£¬ÕâЩÊôÐÔ°üÀ¨µ«²»½öÏÞÓÚ£º
1)ϵͳµÄÈÎÎñµ÷¶È£¬ÈÎÎñ¼äµÄͨÐÅ»úÖÆ
ÈÎÎñµ÷¶È°üÀ¨ÊÇ·ñÊǶàÈÎÎñʵʱ²Ù×÷ϵͳ£¬ÈÎÎñÒÔºÎÖÖ·½Ê½´æÔڵģ¬ÈçºÎÌí¼ÓºÍ¹ÜÀíÈÎÎñ£¿ÈÎÎñ¼äµÄÓÅÏȼ¶ÈçºÎÉèÖã¿ÈÎÎñ¼äµÄÓÅÏȼ¶ÉèÖã¿ÈÎÎñ¶ÑÕ»£¿ ......
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 ......