Ëæ×ÅÓ²¼þ²»¶ÏµÄ·¢Õ¹£¬Î´À´µÄÖÇÄÜÊÖ»ú½«Ô½À´Ô½½Ó½üPCµÄÐÔÄÜ£¬Ò»¸öÇ¿´óµÄÊÖ»ú²Ù×÷ϵͳ½«ÊÇÍÚ¾ò²»¶Ï·ÉÔ¾µÄÊÖ»úÓ²¼þÐÔÄܵĹؼü£¬Ö»ÓÐÇ¿´óµÄ²Ù×÷ϵͳ²ÅÄÜÖ§³Ö¸÷ÖÖ²»¶Ï·¢Õ¹µÄÊÖ»úÓ¦Óã¬ÈçLinuxϵͳ¶ÔjavaµÄÍêÃÀÖ§³ÖÒÔ¼°ÓÅÔ½µÄ¶à½ø³Ìµ÷¶È£¬Ä¦ÍÐÂÞÀºÜÔç¾ÍÍÆ³ö»ùÓÚLinuxϵͳµÄÊÖ»ú£¬Ëæ×ÅGoogleµÄAndroid²Ù×÷ϵͳµÄÍÆ³ö£¬ÁíÒ»¸ö»ùÓÚLinuxµÄÊÖ»ú²Ù×÷ϵͳMeeGoÒ²½øÈëÑз¢¼Æ»®£¬ÏàÐÅδÀ´µÄÖÇÄÜÊÖ»úÈí¼þÓ¦Óý«¸ü¼Ó·á¸»¶à²Ê¡£
±³¾°ÐÂÎÅ
http://tech.sina.com.cn/t/2010-02-16/14043860000.shtml
ŵ»ùÑǺÍÓ¢ÌØ¶ûÐû²¼ÁªºÏ´´½¨Ò»¸ö»ùÓÚLinuxµÄвÙ×÷ϵͳMeeGo¡£MeeGoÕûºÏÁËŵ»ùÑǵÄMaemoºÍÓ¢ÌØ¶ûµÄMoblinÁ½´óLinux¼ÆËã»·¾³£¬×¨ÎªÉÏÍø±¾ºÍÖÇÄÜÊÖ»úµÈ±ãЯÉ豸Éè¼Æ£¬»¹¿ÉÓÃÓÚ³µÁ¾ºÍµçÊÓÉÏÍøµÈ·Ç×ÀÃæÆ½Ì¨¡£Á½¼Ò¹«Ë¾´Ë´ÎЯÊÖÁîÈËÖõÄ¿£¬Õâ²»½öÊÇÒòΪMeeGo½«Á½´óLinuxƽ̨ÕûºÏµ½Ò»¸öÎÝéÜÏ£¬Ò²ÊÇÒòΪ¸Ã²Ù×÷ϵͳ¿çƽ̨֧³ÖÓ¢ÌØ¶ûºÍARMоƬ¡£ÓÉÓڵͺĵçÐèÇó£¬ARMоƬĿǰÆÕ±éÓÃÓÚÆ»¹ûiPhoneµÈÖÇÄÜÊÖ»úÖС£
¡¡¡¡MeeGo²Ù×÷ϵͳÒâÔÚÈÃÓ¦Óÿª·¢ÉÌÒ»´ÎÐÔ±àд³ÌÐò£¬Ëæºó¾Í¿ÉÒÔÓÃÓÚ´ÓÖÇÄÜÊÖ»úµ½ÉÏÍø±¾µÈÒ»ÇÐÓ¦ÓÃÓ²¼þƽ̨£»ÔÚ¾ºÕùÈÕÒæ¼¤ÁÒµÄÖÇÄÜÊÖ»úÁìÓò£¬ÕâÒ»¾ºÕù²ßÂÔÕýÈÕÒæÊ¢ÐС£Adobe½üÆÚÒ²²ÉÓÃÁËͬһսÂÔ ......
The Linux USB input subsystem is a single, harmonized way to manage all input devices. This is a relatively new approach for Linux, with the system being partly incorporated in kernel version 2.4 and fully integrated in the 2.5 development series.
This article covers four basic areas: a description of what the input subsystem does, a short historical perspective on development, a description of how the input subsystem is implemented in the kernel and an overview of the user-space API for the input subsystem and how you can use it in your programs. The first three areas are discussed in this article. The user-space API, the final topic, will be discussed in Part II of this article.
What Is the Input Subsystem?
The input subsystem is the part of the Linux kernel that manages the various input devices (such as keyboards, mice, joysticks, tablets and a wide range of other devices) that a user uses to interact with the kernel, command line and graphical user interface. This subsystem i ......
o: ±àÒëµÄÄ¿±êÎļþ
a: ¾²Ì¬¿â£¬Æäʵ¾ÍÊǰÑÈô¸ÉoÎļþ´òÁ˸ö°ü
so: ¶¯Ì¬Á´½Ó¿â£¨¹²Ïí¿â£©
lo: ʹÓÃlibtool±àÒë³öµÄÄ¿±êÎļþ£¬Æäʵ¾ÍÊÇÔÚoÎļþÖÐÌí¼ÓÁËһЩÐÅÏ¢
la: ʹÓÃlibtool±àÒë³öµÄ¿âÎļþ£¬ÆäʵÊǸöÎı¾Îļþ£¬¼Ç¼ͬÃû¶¯Ì¬¿âºÍ¾²Ì¬¿âµÄÏà¹ØÐÅÏ¢
1 libtoolµÄ¹¤×÷ÔÀí
libtool ÊÇÒ»¸öͨÓÿâÖ§³Ö½Å±¾£¬½«Ê¹Óö¯Ì¬¿âµÄ¸´ÔÓÐÔÒþ²ØÔÚͳһ¡¢¿ÉÒÆÖ²µÄ½Ó¿ÚÖУ»Ê¹ÓÃlibtoolµÄ±ê×¼·½·¨£¬¿ÉÒÔÔÚ²»Í¬Æ½Ì¨ÉÏ´´½¨²¢µ÷Óö¯Ì¬¿â¡£¿ÉÒÔÈÏΪlibtoolÊÇgccµÄÒ»¸ö³éÏ󣬯ä°ü×°ÁËgcc£¨»òÕ߯äËûµÄ±àÒëÆ÷£©£¬Óû§ÎÞÐèÖªµÀϸ½Ú£¬Ö»Òª¸æËßlibtoolÐèÒª±àÒëÄÄЩ¿â¼´¿É£¬libtool½«´¦Àí¿âµÄÒÀÀµµÈϸ½Ú¡£libtoolÖ»Óëºó׺ÃûΪlo¡¢laΪµÄlibtoolÎļþ´ò½»µÀ¡£
libtoolÖ÷ÒªµÄÒ»¸ö×÷ÓÃÊÇÔÚ±àÒë´óÐÍÈí¼þµÄ¹ý³ÌÖнâ¾öÁË¿âµÄÒÀÀµÎÊÌ⣻½«·±ÖصĿâÒÀÀµ¹ØÏµµÄά»¤¹¤×÷³Ðµ£ÏÂÀ´£¬´Ó¶øÊÍ·ÅÁ˳ÌÐòÔ±µÄÈËÁ¦×ÊÔ´¡£libtoolÌṩͳһµÄ½Ó¿Ú£¬Òþ²ØÁ˲»Í¬Æ½Ì¨¼ä¿âµÄÃû³ÆµÄ²îÒìµÈϸ½Ú£¬Éú³ÉÒ»¸ö³éÏóµÄºó׺ÃûΪla¸ß²ã¿âlibxx.la£¨ÆäʵÊǸöÎı¾Îļþ£©£¬²¢½«¸Ã¿â¶ÔÆäËü¿âµÄÒÀÀµ¹ØÏµ£¬¶¼Ð´ÔÚ¸ÃlaµÄÎļþÖС£¸ÃÎļþÖеÄdependency_libs¼Ç¼¸Ã¿âÒÀÀµµÄËùÓп⣨ÆäÖÐÓÐЩÊÇÒÔ.laÎļþµÄÐÎʽ¼ÓÈëµÄ£©£»libdirÔòÖ¸³öÁË¿âµÄ°²×° ......
×÷ÕߣºÒ×ËÉ»ª,»ªÇåÔ¶¼ûǶÈëʽѧԺ½²Ê¦¡£
ÔÚ»ªÇåÔ¶¼ûÉϿιý³ÌÖУ¬·¢ÏÖ¾²Ì¬Ó³Éä·½Ãæ³õѧÕ߱ȽÏÄÑÓÚÕÆÎÕºÍÀí½â£¬ÏÂÃæ·ÖÎöһϾ²Ì¬Ó³Éä»úÖÆµÄÔÀí²¢Í¨¹ýGPIOºÍUSB¡¢LCDµÈµÄ¾²Ì¬Ó³Éä×÷ΪÀý×ÓÀ´ËµÃ÷ÈçºÎͨ¹ýÕâÖÖ¾²Ì¬Ó³ÉäµÄ·½Ê½·ÃÎÊÍâÉè×ÊÔ´¡£
ÄÚºËÌṩÁËÒ»¸öÖØÒªµÄ½á¹¹Ìåstruct machine_desc ,Õâ¸ö½á¹¹ÌåÔÚÄÚºËÒÆÖ²ÖÐÆðµ½Ïàµ±ÖØÒªµÄ×÷ÓÃ,ÄÚºËͨ¹ýmachine_desc½á¹¹ÌåÀ´¿ØÖÆÏµÍ³Ìåϵ¼Ü¹¹Ïà¹Ø²¿·ÖµÄ³õʼ»¯¡£machine_desc½á¹¹ÌåµÄ³ÉÔ±°üº¬ÁËÌåϵ¼Ü¹¹Ïà¹Ø²¿·ÖµÄ¼¸¸ö×îÖØÒªµÄ³õʼ»¯º¯Êý£¬°üÀ¨map_io,init_irq, init_machineÒÔ¼°phys_io , timer³ÉÔ±µÈ¡£
machine_desc½á¹¹Ì嶨ÒåÈçÏ£º
struct machine_desc {
/*
* Note! The first four elements are used
* by assembler code in head-armv.S
&nbs ......
Ò»¡¢ÏÂÔØ°²×°³ÌÐò
1¡¢ ÏÂÔØÄÚºËÔ´Â루linux-2.6.33.tar.bz2£©£¬Î»Öãºhttps://www.kernel.org
2¡¢ ÏÂÔØ×îаæµÄmodule-init-tools£¨module-init-tools-3.8.tar.bz2£©ºÍmodutils£¨modutils-2.4.26-1.src.rpm£©µÄÔ´Âë
λÖãºhttp://www.kernel.org/pub/linux/kernel/people/rusty/modules/
λÖãºhttp://www.kernel.org/pub/linux/utils/kernel/modutils/
3¡¢ ÎÒÓõİ汾ÊÇCentOS 5.4 32bitºÍSL 5.4 64bit£¬ÐèÒª¹âÅÌÖеģºgcc¡¢glibc¡¢make¡¢ncurses-develµÈ°²×°Îļþ
¶þ¡¢°²×°
1¡¢ °²×°module-init-tools
½âѹ£ºtar -jxvf module-init-tools-3.8.tar.bz2
ÉèÖãºcd ./module-init-tools-3.8
./configure –prefix=/sbin
make
su –
make install
2¡¢ ½âѹmodutils
Ö±½ÓÔËÐУº
rpm –ivh modutils-2.4.26-1.src.rpm
µ«ÓеÄʱºò» ......
Ôø×ö¹ýsignalÏà¹ØµÄÒ»µã¶ù¿ª·¢£¬Ì¸Ì¸ÎÒµÄһЩÀí½â¡£
Ê×ÏÈ£¬ÐèÒªÀí½â¼¸¸ösignalÏà¹ØµÄº¯Êý¡£
sigaddset(sigset_t* sigSet, int sigNum ) : ½«ÐźÅsigNum Ìí¼Óµ½Ðźż¯ sigSet ÖУ»
sigdelset(sigset_t* sigSet, int sigNum) : ½«ÐźŠsigNum ´ÓÐźż¯ sigSet ÖÐɾ³ý£»
sigemptyset(sigset_t* sigSet) : Çå¿ÕÐźż¯£»
sigfillset(sigset_t* sigSet) : ÔÚÐźż¯Öдò¿ªËùÓеÄÐźš£
µ«ÊÇÕâ¸öʱºòÖ»ÊǶ¨ÒåºÃÁËÈç´ËÒ»¸öÐźż¯£¬»¹ÓжÔÐźŵIJÙ×÷º¯Êý£º
pthread_sigmask(int opCode, sigset_t* sigSet, sigset_t* oldSigSet) :
opCode Ö¸¶¨ÁËÈçºÎ¶Ô sigSet ÀïµÄÐźŽøÐд¦Àí¡£opCode ÓÐÈý¸öÖµ: SIG_BLOCK
(½«sigSetÖеÄÐźżӵ½µ±Ç°Ïß³ÌµÄÆÁ±Î¼¯ÖÐ)£¬SIG_UNBLOCK (½«sigSet
ÖеÄÐźŴӵ±Ç°Ïß³ÌÆÁ±Î¼¯ÖÐɾ³ý)£¬SIG_SETMASK (½«sigSet ÉèΪµ±Ç°Ïß³ÌµÄÆÁ±Î¼¯)¡£ ÈôoldSigSet !=
NULL£¬Ôò½«Ö®Ç°µÄÐÅºÅÆÁ±Î¼¯´æÈëÆäÖС£
ÁíÍ⻹Óиöº¯Êý sigprocmask() Ò²ÓÐÀàËÆ¹¦ÄÜ¡£Çø±ðÊÇ£ºpthread_sigmask()
ÊÇÏ߳̿⺯Êý£¬ÓÃÓÚ¶àÏ߳̽ø³Ì¡£sigprocmask() ÊǾɵÄʵÏÖ£¬ÓÃÓÚµ¥Ï̵߳Ľø³Ì¡£
& ......