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

linux 2.6 kernel epoll

http://hi.baidu.com/j_fo/blog/item/a43fa60fa6e2f4eaab6457d5.html
Linux2.6ÄÚºËepoll½éÉÜ
2008-11-05 16:35
http://blog.csdn.net/rstevens/archive/2007/10/30/1858067.aspx
http://hi.baidu.com/jmlover/blog/item/24c28b131e6b48d7f7039ee6.html
http://hi.baidu.com/jmlover/blog/item/e64df724f12926348744f91b.html
Ãû´Ê½âÊÍ£ºman epollÖ®ºó£¬µÃµ½ÈçϽá¹û£º
NAME
epoll - I/O event notification facility
SYNOPSIS
#include <sys/epoll.h>
DEscrīptION
epoll is a variant of poll(2) that can be used either as Edge or Level
Triggered interface and scales well to large numbers of watched fds.
Three system calls are provided to set up and control an epoll set:
epoll_create(2), epoll_ctl(2), epoll_wait(2).
An epoll set is connected to a file descrīptor created by
epoll_create(2).   Interest for certain file descrīptors is then
registered via
epoll_ctl(2). Finally, the actual wait is started by epoll_wait(2).
Æäʵ£¬Ò»ÇеĽâÊͶ¼ÊǶàÓàµÄ£¬°´ÕÕÎÒĿǰµÄÁ˽⣬EPOLLÄ£ÐÍËÆºõÖ»ÓÐÒ»ÖÖ¸ñʽ£¬ËùÒÔ´ó¼ÒÖ»Òª²Î¿¼ÎÒÏÂÃæµÄ´úÂ룬¾ÍÄܹ»¶ÔEPOLLÓÐËùÁ˽âÁË£¬´úÂëµÄ½âÊͶ¼ÒѾ­ÔÚ×¢ÊÍÖУº
while (TRUE)
{
int nfds = epoll_wait (m_epoll_fd, m_events, MAX_EVENTS, EPOLL_TIME_OUT);//µÈ´ýEPOLLʼþµÄ·¢Éú£¬Ï൱ÓÚ¼àÌý£¬ÖÁÓÚÏà¹ØµÄ¶Ë¿Ú£¬ÐèÒªÔÚ³õʼ»¯EPOLLµÄʱºò°ó¶¨¡£
if (nfds <= 0)
continue;
m_bOnTimeChecking = FALSE;
G_CurTime = time(NULL);
for (int i=0; i<nfds; i++)
{
try
{
if (m_events[i].data.fd == m_listen_http_fd)//Èç¹ûмà²âµ½Ò»¸öHTTPÓû§Á¬½Óµ½°ó¶¨µÄHTTP¶Ë¿Ú£¬½¨Á¢ÐµÄÁ¬½Ó¡£ÓÉÓÚÎÒÃÇвÉÓÃÁËSOCKETÁ¬½Ó£¬ËùÒÔ»ù±¾Ã»Óá£
{
OnAcceptHttpEpoll ();
}
else if (m_events[i].data.fd == m_listen_sock_fd)//Èç¹ûмà²âµ½Ò»¸öSOCKETÓû§Á¬½Óµ½Á˰󶨵ÄSOCKET¶Ë¿Ú£¬½¨Á¢ÐµÄÁ¬½Ó¡£
{
OnAcceptSockEpoll ();
}
else if (m_events[i].events & EPOLLIN)//Èç¹ûÊÇÒѾ­Á¬½ÓµÄÓû§£¬²¢ÇÒÊÕµ½Êý¾Ý£¬ÄÇô½øÐжÁÈë¡£
{
OnReadEpoll (i);
}
OnWriteEpoll (i);//²é¿´µ±Ç°µÄ»î¶¯Á¬½ÓÊÇ·ñÓÐÐèҪд³öµÄÊý¾Ý¡£
}
catch (int)
{
PRINTF ("CATCH²¶»ñ´íÎó\n");


Ïà¹ØÎĵµ£º

ÔÚlinuxÏÂʵÏÖweb qqµÄ×ÀÃæ»¯


´´½¨×ÀÃæÍ¼±ê
Ŀǰ½«ÍøÂçÓ¦ÓÃÀ©Õ¹µ½×ÀÃæÊÇÒ»¸öÇ÷ÊÆ£¬´æÔÚןܶà½â¾ö·½°¸£¬±¾ÎÄÒÔ Mozilla Prism ΪÀý£¬ÀàËÆµÄ·½·¨Í¬ÑùÊÊÓÃÓÚ Google Chrome ¡£
1. µ½ Mozilla Prism µÄÍøÕ¾ÉÏÏÂÔØ Prism£¬µã»÷ Download Now Ö®ºó»áÌáʾÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÒÔ Mozilla Firefox À©Õ¹µÄ·½Ê½£¬ÊʺÏÒѾ­°²×°ÓÐ Firefox µÄÅóÓÑ£»Ò»Ö ......

linuxÉÏʹÓÃrlwrap ½â¾öoracle¿ÉÒÔÉÏϼü²é¿´ÃüÁî

linux ÉϵÄoracle sqlplus ²»ÄÜÀûÓà ÉÏ, Ï ¼üÀ´²é¿´ÃüÁËÑË÷µ½½â¾öÎÊÌâµÄ°ì·¨£¬ÕûÀíÈçÏÂ
°²×°Èí¼þrlwrap¿ÉÒÔ½â¾öÕâ¸öÎÊÌ⣬¸ÃÈí¼þÊÇÓÃcдµÄ³ÌÐò
¹Ù·½ÏÂÔØµØÖ·£ºhttp://utopia.knoware.nl/~hlub/uck/rlwrap/
°²×°¹ý³Ì£º
ÎÒÃÇÒ²¿ÉÒԲ鿴½âѹºóµÄtar°ü£¬²é¿´README°ïÖúÎļþ
shell>tar -zxvf rlwrap-0.36.tar.gz
sh ......

Compile Linux Kernel Modules

ÎÒÕýÔÚѧϰдlinux device driver for embedded system.
ÎÒÓÐÒ»¸ölinuxǶÈëʽÉ豸£¬Ò²ÓÐÕâ¸öÉ豸µÄlinuxÔ´´úÂë¡£Ò²ÓÐcross compiler tool chain.
µÚÒ»²½£¬¾ÍÊÇдһ¸ö¼òµ¥µÄhelloÄ£¿é£¬È»ºó×°µ½É豸ÖС£ÒÔÑéÖ¤ÎÒÕâ¸ö¿ª·¢»·¾³¡£
ÔÚÍøÉÏËÑË÷ÁËһϣ¬ how to cross compile linux device driver
·¢ÏÖÔÚlinux´úÂë¸ùĿ¼µÄMak ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ