LinuxÊäÈë×Óϵͳ·ÖÎö
ת×Ôhttp://blog.csdn.net/colorant/archive/2007/04/12/1561837.aspx
1 ÊäÈë×Óϵͳ¼Ü¹¹Overview
ÊäÈë×Óϵͳ£¨Input Subsystem£©µÄ¼Ü¹¹ÈçÏÂͼËùʾ
ÊäÈë×ÓϵͳÓÉ ÊäÈë×ÓϵͳºËÐIJ㣨 Input Core £©£¬Çý¶¯²ãºÍʼþ´¦Àí²ã£¨Event Handler£©Èý²¿·Ý×é³É¡£Ò»¸öÊäÈëʼþ£¬ÈçÊó±êÒÆ¶¯£¬¼üÅ̰´¼ü°´Ï£¬joystickµÄÒÆ¶¯µÈµÈͨ¹ý Driver -> InputCore -> Eventhandler -> userspace µÄ˳Ðòµ½´ïÓû§¿Õ¼ä´«¸øÓ¦ÓóÌÐò¡£
ÆäÖÐInput Core ¼´ Input Layer ÓÉ driver/input/input.c¼°Ïà¹ØÍ·ÎļþʵÏÖ¡£¶ÔÏÂÌṩÁËÉ豸Çý¶¯µÄ½Ó¿Ú£¬¶ÔÉÏÌṩÁËEvent Handler²ãµÄ±à³Ì½Ó¿Ú¡£
1.1 Ö÷ÒªÊý¾Ý½á¹¹
±í 1 Input Subsystem main data structure
Êý¾Ý½á¹¹
ÓÃ;
¶¨ÒåλÖÃ
¾ßÌåÊý¾Ý½á¹¹µÄ·ÖÅäºÍ³õʼ»¯
Struct input_dev
Çý¶¯²ãÎïÀíInputÉ豸µÄ»ù±¾Êý¾Ý½á¹¹
Input.h
ͨ³£ÔÚ¾ßÌåµÄÉ豸Çý¶¯ÖзÖÅäºÍÌî³ä¾ßÌåµÄÉ豸½á¹¹
Struct Evdev
Struct Mousedev
Struct Keybdev…
Event Handler²ãÂß¼InputÉ豸µÄÊý¾Ý½á¹¹
Evdev.c
Mousedev.c
Keybdev.c
Evdev.c/Mouedev.c …ÖзÖÅä
Struct Input_handler
Event HandlerµÄ½á¹¹
Input.h
Event Handler²ã£¬¶¨ÒåÒ»¸ö¾ßÌåµÄEvent Handler¡£
Struct Input_handle
ÓÃÀ´´´½¨Çý¶¯²ãDevºÍHandlerÁ´±íµÄÁ´±íÏî½á¹¹
Input.h
Ev
Ïà¹ØÎĵµ£º
UNIXÊÇÀúÊ·×îÓÆ¾ÃµÄͨÓòÙ×÷ϵͳ¡£1969Ä꣬ÃÀ¹ú±´¶ûʵÑéÊÒµÄK.ThompsonºÍD.M.RitchieÔÚ¹æÄ£½ÏС¼°½Ï¼òµ¥µÄ·Öʱ²Ù×÷ϵͳMULTICSµÄ»ù´¡ÉÏ¿ª·¢³öUNIX, µ±Ê±ÊÇÔÚDECµÄPDP—7СÐͼÆËã»úÉÏʵÏֵģ¬1970ÄêÕýʽͶÈëÔËÐС£´ËºóÊýÄ꣬UNIXÒ»Ö±ÊÇÒ»¸öÏÞÓÚÔÚAT&TÄÚ²¿Ê¹ÓõIJÙ×÷ϵͳ¡£1971Ä꣬·¢Õ¹³öÒÔ PDP- ......
Ò»Ö±ÒÔÀ´ÎÒµÄÎÄÕ¶¼ÊÇÒÔ¹¤×÷±Ê¼ÇµÄÐÎʽ´æÔÚ¡£Õâ¶ÔÓÚ×Ô¼º¶ÁÆðÀ´Ã»Ê²Ã´´ó°£¬µ«ÊǶÔÓÚÆäËû¶ÁÕß¿ÉÄܾÍÓÐЩÃÔã¡£ÎÒ¾¡Á¿¸Ä¸Ä£¬»»ÖÖ·½Ê½¡£
1. MySQL µÄ°æ±¾
Èç¹ûÒªÖ§³Ö·ÖÇø±í£¬ÔòÓ¦¸ÃʹÓà 5.1.x ÒÔÉϵİ汾¡£Èç
mysql> show variables like '%version%';
+-------------------------+------------------------------ ......
±¾´Î°²×°µÄϵͳƽ̨Ϊredhat 5
Ò»¡¢Ê¹ÓÃRPM°ü½øÐа²×°
Ê×ÏÈ¿ÉÒÔ´Ó°²×°¹âÅÌÖлòÕßµ½mysqlµÄÍøÕ¾ÉÏÏÂÔØ¶ÔÓ¦°æ±¾µÄrpm°üÈçÏ£º
MySQL-server-community-5.1.38-0.rhel5.i386.rpm
MySQL-client-community-5.1.38-0.rhel5.i386.rpm
½Ó×ÅÎÒÃÇ¿ÉÒÔʹÓÃrpmÃüÁî½øÐа²×°£º
rpm -ivh MySQL ......
Linux µÄ Input Device ÊÇÖØÒªµÄÒ»個 subsystem£¬ÔÚ進ÐÐ實Àý½é紹ǰ£¬ÏÈ´óÂÔÁ˽âÒ»ÏÂÏà關µÄ API¡£input.cÊÇLinuxµÄÊäÈë驅動³Ìʽ£¬Ö÷ÒªÖ§Ô®鍵盤與»¬ÊóµÄ輸È룻input.c½éÃæÌØÊâµÄµØ·½ÊÇ採ÓÃÁËʼþ£¨event£©µ ......
£¨1£©ÔÚ\drivers\input\Input.cÖС£
A£¬subsys_initcall(input_init);
B£¬static int __init input_init(void)ÖÐÍê³É¼¸¸öÖØÒªµÄ²Ù×÷£º
err = class_register(&input_class);ÒÔÊäÈëÀ෽ʽע²áÀà
input_proc_init(); //´´½¨procϵÄĿ¼ºÍ ......