Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

LinuxÇý¶¯Ö®ioctl

ÔÚÓû§¿Õ¼ä£¬Ê¹ÓÃioctlϵͳµ÷ÓÃÀ´¿ØÖÆÉ豸£¬Ô­ÐÍÈçÏ£º
int ioctl(int fd, unsigned long cmd, ...);
µÚÈý¸ö²ÎÊý²»±íʾһ¸ö±äÊýÄ¿µÄ²ÎÊý£¬¶øÊÇÒ»¸öÀàÐÍ¿ÉÑ¡µÄ²ÎÊý¡£µÚÈý¸ö²ÎÊýÒÀÀµÓÚ¿ØÖÆÃüÁһЩÃüÁî²»ÓòÎÊý£¬Ò»Ð©ÓÃÒ»¸öÕûÊýÖµ£¬Ò»Ð©Ê¹ÓÃÖ¸Õë
1¡¢ioctlº¯Êý¶¨ÒåÃüÁî
ÔÚ±àдioctl´úÂë֮ǰ£¬Ê×ÏÈÐèÒª¶¨ÒåÃüÁΪÁË·ÀÖ¹¶Ô´íÎóµÄÉ豸ʹÓÃÕýÈ·µÄÃüÁÃüÁîºÅÓ¦¸ÃÔÚϵͳ·¶Î§ÄÚÊÂΨһµÄ
ioctlÃüÁî±àÂë±»»®·ÖΪ¼¸¸ö¶Î£¬include/asm/ioctl.hÖж¨ÒåÁËÕâЩ×ֶΣºÀàÐÍ£¨»ÃÊý£©£¬»ùÊý£¬´«ËÍ·½Ïò£¬²ÎÊý´óСµÈ¡£Documentation/ioctl-number.txtÎļþÖÐÂÞÁÐÁËÔÙÄÚºËÖÐÒѾ­Ê¹ÓÃÁ˵ĻÃÊý¡£
¶¨ÒåioctlÃüÁîµÄÕýÈ··½·¨ÊÇʹÓÃ4¸öλ¶Î£¬Õâ¸öÁбíÖнéÉܵķûºÅ¶¨ÒåÔÚ<linux/ioctl.h>ÖУº
Type£º
»ÃÊý£¨ÀàÐÍ£©£º±íÃ÷ÄĸöÉ豸µÄÃüÁÔڲο¼ÁËioctl-number.txtÖ®ºóÑ¡³ö£¬8λ¿í¡£
Number£º
ÐòºÅ£¬±íÃ÷É豸ÃüÁîÖеĵڼ¸¸ö£¬8λ¿í
ÄÚºËÌṩÁËÏÂÁкêÀ´°ïÖú¶¨ÒåÃüÁîºÅ£¬ÈçÏÂ
_IO(type, nr)£ºÃ»ÓвÎÊýµÄÃüÁî
_IOR(type, nr, datatype)£º´ÓÇý¶¯ÖжÁÊý¾Ý
_IOW(type, nr, datatype)£ºÐ´Êý¾Ýµ½Çý¶¯
_IOWR(type, nr, datatype)£ºË«Ïò´«ËÍ£¬typeºÍnumber×÷Ϊ²ÎÊý±»´«µÝ
2¡¢ioctlº¯ÊýµÄʵÏÖ
·ÖÈý¸ö¼¼Êõ»·½Ú£º
1¡¢·µ»ØÖµ
ioctlº¯ÊýµÄʵÏÖͨ³£ÊǸù¾ÝÃüÁîÖ´ÐеÄÒ»¸öswitchÓï¾ä¡£µ«Êǵ±ÃüÁî²»ÄÜÆ¥ÅäÈκÎÒ»¸öÉ豸ËùÖ§³ÖµÄÃüÁîʱ£¬Í¨³£·µ»Ø-EINVAL£¨“·Ç·¨²ÎÊý”£©
2¡¢²ÎÊýʹÓÃ
Èç¹ûÊÇÒ»¸öÕûÊý£¬¿ÉÒÔÖ±½ÓʹÓá£Èç¹ûÊÇÖ¸Õ룬ÎÒÃDZØÐëÈ·±£Õâ¸öÓû§µØÖ·ÊÇÓÐЧµÄ£¬Òò´ËʹÓÃÇ°Ðè½øÐÐÕýÈ·µÄ¼ì²é
ʹÓÃint access_ok(int type, const void *addr, unsigned long size)À´¼ì²éÒ»¸öÖ¸ÕëµØÖ·ÊÇ·ñ¿ÉÒÔ·ÃÎÊ
µÚÒ»¸ö²ÎÊýÊÇVERIFY_READ»òÕßÊÇVERIFY_WRITE£¬ÓÃÀ´±íÃ÷¶ÁÓû§Äڴ滹ÊÇдÓû§ÄÚ´æ¡£addr²ÎÊýʱҪ²Ù×÷µÄÓû§ÄÚ´æµØÖ·£¬sizeÊDzÙ×÷µÄ³¤¶È¡£Èç¹ûioctlÐèÒª´ÓÓû§¿Õ¼ä¶ÁÒ»¸öÕûÊý£¬ÄÇôsize = sizeof(int)¡£Èç¹ûÐèҪͬʱ¶ÁºÍд£¬ÔòʹÓÃVERIFY_WRITE¡£
access_ok·µ»ØÒ»¸ö²¼¶ûÖµ£º1Êdzɹ¦£¨´æȡûÎÊÌ⣩ºÍ0ÊÇʧ°Ü£¨´æÈ¡ÓÐÎÊÌ⣩£¬Èç¹û¸Ãº¯Êý·µ»Øʧ°Ü£¬ÔòioctlÓ¦µ±·µ»Ø-EFAULT£¬È磺
if(_IOC_DIR(cmd) & _IOC_READ)// Ϊʲô_IOC_READ¶ÔÓ¦VERIFY_WRITE£¿£¿£¿
    err = !access_ok(VERIFY_WRITE, (void  __user *)arg, _IOC_SIZE(cmd));
else if(_IOC_DIR(cmd) & _IOC_WRITE)
       err = ! access_ok(VERI


Ïà¹ØÎĵµ£º

ÐéÄâ»úÏÂLinuxÉÏÍøÅäÖà X

°²×°ÁËVMware
ÒÔºó£¬
XP
µÄÍøÂçÁ¬½ÓÀïÃæ¶àÁËÁ½¸öÍøÂçÊÊÅäÆ÷£¬·Ö±ðÊÇ
VMnet1
ºÍ
VMnet8
£¬ËüÃǵÄÏà¹ØÊôÐÔ¶¼ÊÇĬÈÏ×Ô¶¯ÅäÖõģ¬ÎÒÃÇ
²»ÓÃÀí²ÇÔÚ
Linux
ÏÂÉèÖÃ
ÉÏÍøµÄ²½Ö裺µÚÒ»²½£¬½«ËÞÖ÷ϵͳ£¨¼´
WinXP
£©ºÍ×Óϵͳ£¨¼´
Linux
£©µÄÁ½¸öÍø¿¨°ó¶¨ÊµÏÖ¹²Ïí¡£ÒÀ´ÎÊÇÍøÂçÁ¬½Ó
--->
±¾µØÁ¬½ÓÊôÐÔ
--->
Ñ¡Ï ......

Linux ³£ÓÃÃüÁת£©


linuxĿ¼¼Ü¹¹ 
/ ¸ùĿ¼ 
/bin ³£ÓõÄÃüÁî binary file µÄÄ¿錄 
/boot ´æ·ÅϵͳÆô¶¯Ê±±ØÐë¶ÁÈ¡µÄµµ°¸£¬°üÀ¨ºËÐÄ (kernel) ÔÚÄÚ 
/boot/grub/menu.lst GRUBÉèÖà
/boot/vmlinuz Äںˠ
/boot/initrd ºËÐĽâ壓縮ËùÐè RAM Disk 
/dev ϵͳÖܱßÉ豸 
/etc ......

LinuxÈí¼þ°²×°³£Ó÷½·¨

1¡¢Èí¼þ°²×°
жÔØ£¬·Ö¼¸ÖÖÇé¿ö£º
A£º
RPM°ü£¬ÕâÖÖÈí¼þ°ü¾ÍÏñwindowsµÄEXE°²×°
ÎļþÒ»Ñù£¬¸÷ÖÖÎļþÒѾ­±àÒëºÃ£¬²¢´òÁË°ü£¬ÄĸöÎļþ¸Ã·Åµ½ÄĸöÎļþ¼Ð£¬¶¼Ö¸¶¨ºÃÁË£¬°²×°
·Ç³£·½±ã£¬ÔÚͼÐνçÃæÀïÄãÖ»ÐèҪ˫»÷¾ÍÄÜ×Ô¶¯°²×°
¡£
==ÈçºÎжÔØ:
1¡¢´ò¿ªÒ»¸öSHELLÖÕ¶Ë
2¡¢ÒòΪLinux
ϵÄÈí¼þÃû¶¼°üÀ¨°æ±¾ºÅ£¬ËùÒÔжÔØÇ°×îºÃ ......

linux writeµÄÐÐΪ

´Ówrite()µ÷Ó÷µ»Øʱ£¬ÄÚºËÒѾ­½«»º³åÇøËùÌṩµÄÊý¾Ýµ½Äں˵Ļº³åÇø£¬µ«ÊÇÎÞ·¨±£Ö¤Êý¾ÝÒѾ­Ð´³öµ½ÆäÔ¤¶¨µÄÄ¿µÄµØ¡£µÄÈ·£¬Ð´Èëµ÷Ó÷µ»ØµÄËÙ¶ÈʵÔÚÌ«¿ìÁË£¬¿ÉÄÜûÓÐʱ¼äÍê³É¸ÃÏîÄ¿µÄ¹¤×÷¡£´¦ÀíÆ÷ºÍÓ²ÅÌÖ®¼äµÄÐÔÄܲîÒìʹµÃ´ËÀàÁîÈËÍ·Í´µÄÐÐΪÏÔ¶øÒ×¼û¡£
ÊÂʵÉÏ£¬Èç¹ûÓû§¿Õ¼äÓ¦ÓóÌÐò·¢³öwrite()ϵͳµ÷Óã¬LinuxÄں˻áÏȽøÐÐÈ ......

ÐéÄâ»úLinuxÏÂMinicomµÄÅäÖÃ

1¡¢Ìí¼Ó´®¿Ú: ÔÚLinuxÆô¶¯Ö®Ç°£¬ÐéÄâ»ú--¡·ÉèÖÃ--¡·Ìí¼Ó--¡·´®¿Ú--¡·±£´æ--¡·Æô¶¯Linux¡£
 
2¡¢#minicom £¬³öÏÖÆô¶¯½çÃ棬CTRL-A Z ½øÈë°ïÖú½çÃæ
   
3¡¢¼üÈëO £¬ÅäÖô®¿Ú£¬Ñ¡ÔñµÚÈýÏî“Serial port setup”µã»÷»Ø³µ
   
4¡¢Í¨¹ý·Ö±ð¼üÈëA¡¢E¡¢F£¬ÅäÖ㬵ã»÷»Ø³µ£¨FÑ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ