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
Ïà¹ØÎĵµ£º
MYSQL°²×°
//½âѹ±àÒë°²×°
# tar xzvf mysql-5.0.27.tar.gz
# cd mysql-5.0.27
# ./configure -prefix=/home/redadmin/mysql
# make
# make install
# cd /home/redadmin/mysql/
# cp share/mysql/my-medium.cnf ./
# mv my-medium.cnf my.cnf
// my.confÎļþÐÞ¸Ä
# vi my.cnf
ÐÞ¸Äǰ£º
port &nb ......
¼Ù¶¨Äã»áCÓïÑÔ£¬¶øÇÒÃ÷°×CÓïÑÔÃæÏò¶ÔÏó±à³ÌµÄschme£¬¶Ô²Ù×÷ϵͳ£¨°üÀ¨µ÷¶È£¬ÄÚ´æ·ÖÅ䣬·ÖÒ³£¬Í¬²½£¬etc£©±È½ÏÁ˽⡣ÄÇôÄã¿ÉÒÔ°´ÕÕÈçÏÂ˳ÐòѧϰLinux Äںˡ£
1.¿´Linux Device DriverÕâ±¾Êé¡£ÕâÊÇΪÁËÈÃÄã¶®µÃ±àÒëÄÚºËÄ£¿éµÄ·½·¨¡£»¹ÓÐΪLinux¸÷ÖÖÉ豸ÁôÏÂһЩӡÏó¡£Í¬Ê±Ò»±é¿´ÊéÒ»±ß¿´Ä³Ð©É豸µÄÔ´´ú ......
Ò»£®Ìî¿ÕÌ⣺
1. ÔÚLinuxϵͳÖУ¬ÒÔ Îļþ ·½Ê½·ÃÎÊÉ豸 ¡£
2. LinuxÄÚºËÒýµ¼Ê±£¬´ÓÎļþ /etc/fstab ÖжÁȡҪ¼ÓÔØµÄÎļþϵͳ¡£
3. LinuxÎļþϵͳÖÐÿ¸öÎļþÓà i½Úµã À´±êʶ¡£
4. È«²¿´ÅÅÌ¿éÓÉËĸö²¿·Ö×é³É£¬·Ö±ðΪÒýµ¼¿é ¡¢×¨ÓÃ¿é ¡¢ i½Úµã±í¿é ºÍÊý¾Ý´æ´¢¿é¡£
5. Á´½Ó·ÖΪ£º Ó²Á´½Ó ºÍ ·ûºÅÁ´½Ó ¡£
6. ³¬¼¶¿é°üº¬ÁËi½ ......
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 ......
»ù±¾¸ÅÄî
¿âÓж¯Ì¬Ó뾲̬Á½ÖÖ£¬¶¯Ì¬Í¨³£ÓÃ.soΪºó׺£¬¾²Ì¬ÓÃ.aΪºó׺¡£
ÀýÈ磺libhello.so libhello.a ΪÁËÔÚͬһϵͳÖÐʹÓò»Í¬°æ±¾µÄ¿â£¬¿ÉÒÔÔÚ¿âÎļþÃûºó¼ÓÉϰ汾ºÅΪºó׺,ÀýÈ磺 libhello.so.1.0,ÓÉÓÚ³ÌÐòÁ¬½ÓĬÈÏÒÔ.soΪÎļþºó׺Ãû¡£ËùÒÔΪÁËʹÓÃÕâЩ¿â£¬Í¨³£Ê¹Óý¨Á¢·ûºÅÁ¬½ÓµÄ·½Ê½¡£
ln -s ......