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

LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç9 Ò첽֪ͨÓëÒì²½I/O


Ò첽֪ͨ£ºÒ»µ©É豸¾ÍÐ÷£¬ÔòÖ÷¶¯Í¨ÖªÓ¦ÓóÌÐò£¬ÕâÑùÓ¦ÓóÌÐò¸ù±¾²»ÐèÒª²éѯÉ豸״̬£¬ÕâÒ»µã·Ç³£ÀàËÆÓÚÓ²¼þÉϵēÖжϔµÄ¸ÅÄ±È½Ï׼ȷµÄ³ÆÎ½ÊÇ“ÐźÅÇý¶¯µÄÒì²½I/O
 
//Æô¶¯ÐźÅÇý¶¯»úÖÆ
signal(SIGIO, input_handler);//ÈÃinput_handler()´¦ÀíSIGIOÐźÅ
fcntl(fd, F_SETOWN, getpid());//ÉèÖñ¾½ø³ÌΪSTDIN_FILENOÎļþµÄÓµÓÐÕߣ¬ÈÃÄÚºËÖªµÀ½«Ðźŷ¢¸ø±¾½ø³Ì
oflags = fcntl(fd, F_GETFL);//ÏÂÃæÁ½¾ä£ºÉèÖÃFASYNC±êÖ¾£¬Æô¶¯Ò첽֪ͨ±êÖ¾
fcntl(fd, F_SETFL, oflags | FASYNC); 
É豸Çý¶¯ÖÐÒ첽֪ͨ±à³Ì±È½Ï¼òµ¥£¬Ö÷ÒªÓõ½Ò»ÏîÊý¾Ý½á¹¹ºÍÁ½¸öº¯Êý
Êý¾Ý½á¹¹£º
struct xxx_dev
{
Struct cdev cdev;
……
Struct fasync_struct *async_queue;
}
 
 
Int fasync_helper(int fd, struct file *filp, int mode, struct fasync_struct **fa);
 
Void kill_fasync(struct fasync_struct **fa, int sig, int band);
 
static int globalfifo_fasync(int fd, struct file *filp, int mode)
{
    struct globalfifo_dev *dev = filp->private_data;
    return fasync_helper(fd, filp, mode, &dev->async_queue);
}
 
static ssize_t globalfifo_write(struct file *filp, const char __user *buf,
  size_t count, loff_t *ppos)
{
    struct globalfifo_dev *dev = filp->private_data; //»ñµÃÉ豸½á¹¹ÌåÖ¸Õë
    ……
   
    if (dev->async_queue)
       kill_fasync(&dev->async_queue, SIGIO, POLL_IN);
   
    ret = count;
  }
 
int globalfifo_release(struct inode *inode, struct file *filp)
{
 
   globalfifo_fasync( - 1, filp, 0);
   return 0;
}
 
AIO»ù±¾Ë¼ÏëÊÇÔÊÐí½ø³Ì·¢ÆðºÜ¶àI/O²Ù×÷£¬¶ø²»ÓÃ×èÈû»òµÈ´ýÈκβÙ×÷Íê³É
 
Òì²½IOºÍ±ê×¼IOÖ®¼äµÄÁíÒ»¸öÇø±ðÊDz»ÄÜÁ¢¼´·ÃÎÊÕâ¸öº¯ÊýµÄ·µ»Ø×´Ì¬£¬ÒòΪ²¢Ã»ÓÐ×èÈûÔÚread()µ÷ÓÃÉÏ¡£ÔÚ±ê×¼µÄread()µ÷ÓÃÖУ¬·µ»Ø×´Ì¬ÊÇÔڸú¯Êý·µ»ØÊ±ÌṩµÄ£¬µ«ÊÇÔÚÒì²½IOÖУ¬ÎÒÃÇҪʹÓÃaio_return()º¯Êý£¬Ö»ÓÐÔÚaio_error()µ÷


Ïà¹ØÎĵµ£º

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

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

windowsÏ´ linux ϶àÐéÄâ²âÊÔ»ú°²×°¼°ÉÏÍøÅäÖÃ

Ò»¡¢ÏÂÔØVMwareÈí¼þ²¢°²×°
¶þ¡¢¹âÅÌ.iso·½Ê½°²×°linux
Èý¡¢¹²ÏílinuxºÍwindowsĿ¼
ËÄ¡¢½«"±¾µØÁ¬½Ó"ÉèΪ¹²Ïí·½Ê½£¬½ûÖ¹ÆäËûÐéÄâ»úÁ¬½Ó
      ´ò¿ªÐéÄâ»úÔÚÐéÄâ»ú±à¼­ÖÐÉèÖÃΪ'ÇŽÓ"·½Ê½;
²¢Ñ¡ÖÐDevice statusϵÄÁ½ÏֻËùÒÔÓÃÇŽӷ½Ê½²»ÓÃhost-only·½Ê½ÉÏÍøÊÇÒòΪ
ÔÚÓ÷ÓÉÆ÷ʱhost-onl ......

WindowsϵÄLinuxÐéÄâ»úÍøÂçÅäÖÃ

½ñÌìÔÚÐéÄâ»úÏÂÓÖ֨װÁËlinux£¬ÏÂÃæÊÇ´ÓÍøÉÏËѵ½µÄlinuxÐéÄâ»úµÄÍøÂçÅäÖãº
 
1¡¢ Äã×°ºÃÐéÄâ»úºó,Äã»á·¢ÏÖ¶à³öÀ´Á½¸öÍø¿¨ ,Ò»¸ö1,Ò»¸ö8,
2¡¢ ¹²Ïí¶ÔÍâµÄÍø¿¨£º“±¾µØÁ¬½Ó—ÊôÐÔ—¸ß¼¶” Ñ¡ÖÐ
   ÔÊÐíÆäËûÍøÂçÓû§Í¨¹ý´Ë¼ÆËã»úµÄInternetÁ¬½ÓÀ´Á¬½Ó
  £¨Õâʱ“ÔÊÐíÆäËûÍ ......

µÚÒ»¸öǶÈëʽLinuxµÄÇý¶¯³ÌÐò

   ´ÓÕâ¸ö×ܽáÕýʽ¿ªÊ¼ÁËÎÒµÄÇý¶¯Ö®Âã¬ÐÄÇé²»ÃâÓе㼤¶¯£¬¾¡¹ÜÏÖÔÚ¶ÔÇý¶¯µÄ±àд»¹ºÜÄ£ºý£¬µ«»¹ÊÇÓмÍÄîÒâÒåµÄ……
 
¿ª·¢Æ½Ì¨£º
    ÐéÄâ»úÏÂRedHat9£¬ÄÚºË2.4.20.8
    ½»²æ±àÒë±àÒëÆ÷£ºÌìǶ¹«Ë¾ÌṩµÄarm-linux-gcc 4.3.3
    ÄÚºËÊ÷£º/h ......

LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç6 ×Ö·ûÉ豸Çý¶¯

ʹÓÃÏÂÁкé¿ÉÒÔͨ¹ýÖ÷É豸ºÅºÍ´ÎÉ豸ºÅÉú³Édev_t
MKDEV(int major, int mainor)
Èç¹û¸´ÖƵÄÄÚ´æÊǼòµ¥ÀàÐÍ£¬Èçchar¡¢int¡¢longµÈ£¬Ôò¿ÉÒÔʹÓüòµ¥µÄput_user()ºÍget_user()
Linuxϵͳ½¨ÒéÒÔÈçͼ·½Ê½¶¨ÒåioctlÃüÁîÂë
 
ÃüÁËÂëµÄÉ豸ÀàÐÍ×Ö¶ÎΪһ¸ö“»ÃÊý”£¬¿ÉÒÔÊÇ0-0xffÖ®¼äµÄÖµ£¬ÄÚºËÖеÄioctl-number ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ