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

ÆÊÎöÒ»¸öÓÉsendfileÒý·¢µÄlinuxÄÚºËBUG

֮ǰ¿´ÁË¡¶Ð±¬Äں˸ßΣ©¶´sock_sendpageµÄÀûÓ÷ÖÎöµÄÌÖÂÛ
¡·ÕâƪÌû×Ó£¬ÔھżúÐÖºÍÖîλCUerµÄÖ¸ÒýÏ£¬´óÖÂŪÇåÁËÕû¸ö©¶´µÄʼĩ¡£ÏÖÓë´ó¼Ò·ÖÏí£¨ÒýÓÃ×ÔÎҵĿռä
£©¡£
ÓÐʲô²»×ãÖ®´¦»¹Íû¶à¶àÖ¸½Ì~
Äں˵ÄBUG
Õâ¸öBUGÊ×ÏȵôÓsendfileϵͳµ÷ÓÃ˵Æð¡£
¿¼Âǽ«Ò»¸ö±¾µØÎļþͨ¹ýsocket·¢ËͳöÈ¥µÄÎÊÌâ¡£ÎÒÃÇͨ³£µÄ×ö·¨ÊÇ£º´ò¿ªÎļþfdºÍÒ»¸ösocket£¬È»ºóÑ­»·µØ´ÓÎļþfdÖÐreadÊý¾Ý£¬²¢½«¶ÁÈ¡
µÄÊý¾Ýsendµ½socketÖС£ÕâÑù£¬Ã¿´Î¶ÁдÎÒÃǶ¼ÐèÒªÁ½´Îϵͳµ÷Ó㬲¢ÇÒÊý¾Ý»á±»´ÓÄں˿½±´µ½Óû§¿Õ¼ä(read)£¬ÔÙ´ÓÓû§¿Õ¼ä¿½±´µ½ÄÚºË
(send)¡£
¶øsendfile¾Í½«Õû¸ö·¢Ë͹ý³Ì·â×°ÔÚÒ»¸öϵͳµ÷ÓÃÖУ¬±ÜÃâÁ˶à´Îϵͳµ÷Ó㬱ÜÃâÁËÊý¾ÝÔÚÄں˿ռäºÍÓû§¿Õ¼äÖ®¼äµÄ´óÁ¿¿½±´¡£
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
ËäÈ»Õâ¸öϵͳµ÷ÓýÓÊÕinºÍoutÁ½¸öfd£¬µ«ÊÇÓÐËùÏÞÖÆ£¬inÖ»ÄÜÊÇÆÕͨÎļþ£¬outÖ»ÄÜÊÇsocket£¨Õâ¸öÏÞÖƲ»ÖªµÀºóÀ´µÄÄں˰汾ÓÐûÓÐ·Å¿í£©¡£
sendfileϵͳµ÷ÓÃÔÚÄÚºËÀïÃæÊÇÔõôʵÏÖµÄÄØ£¿Õâ¸ö»¹ÊDZȽϸ´ÔÓ£¬ËüÔÚÄÚºËÀïÃæ×öÁËÔ­À´ÒªÔÚÓû§Ì¬×öµÄÊÂÇ飺´´½¨Ò»¸öpipe¶ÔÏó×÷bufferÓᢴÓin_fdÖжÁÊý¾Ýµ½pipeÖС¢½«pipeÖеÄÊý¾Ýдµ½out_fd¡¢Ñ­»·Ö±µ½Âú×ã½áÊøÌõ¼þ¡£
¹ØÓÚдÊý¾Ýµ½out_fdµÄ¹ý³Ì£¬¼òÒªÃèÊöÈçÏ£º
sys_sendfile
=> Èë¿Ú
do_sendfile
=> ²ÎÊý¼ì²é£¬ÆäÖлáÈ·¶¨out_fd¶ÔÓ¦µÄfile½á¹¹°üº¬sendfile·½·¨(out_file->f_op->sendpage)
do_splice_direct
=> ×îÖÕµ÷Óõ½out_file->f_op->splice_write£¬¶øout_fileÊǸösocket£¬ËüµÄf_op->splice_writeµÈÓÚgeneric_splice_sendpage
generic_splice_sendpage
=> ×îÖÕµ÷Óõ½out_file->f_op->sendpage£¬Õâ¸ösendpageµÈÓÚsock_sendpage
sock_sendpageµÄ´úÂëÈçÏ£º
struct socket *sock;
int flags;
sock = file->private_data;
flags = !(file->f_flags & O_NONBLOCK) ? 0 : MSG_DONTWAIT;
if (more)
   
flags |= MSG_MORE;
return sock->ops->sendpage(sock, page, offset, size, flags);
×¢Ò⣬BUG³öÏÖÁË£¬µ÷ÓÃsock->ops->sendpage֮ǰûÓÐÅжÏÕâ¸öº¯ÊýÖ¸ÕëÊÇ·ñΪNULL¡£
(ÕâÀïµ÷ÓõÄsock->ops->sendpage¾ÍÊÇ
out_file->f_op->private_data->ops->sendpage£¬out_file->f_op->private_data
Ö¸ÕëÖ¸ÏòµÄÊÇÒ»¸östruct socket½á¹¹£¬ÒòΪÕâ¸öfd´ú±íµÄÊÇÒ»¸ösock


Ïà¹ØÎĵµ£º

ʵսLinux Bluetooth±à³Ì(Áù) L2CAP±à³ÌʵÀý

ÀýÒ»£º·¢ËÍSignaling Packet£º
Signaling CommandÊÇ2¸öBluetoothʵÌåÖ®¼äµÄL2CAP²ãÃüÁî´«Êä¡£ËùÒÔµÃSignaling CommandʹÓÃCID 0x0001.
¶à¸öCommand¿ÉÒÔÔÚÒ»¸öC-frame£¨control frame£©Öз¢ËÍ¡£
 Èç¹ûÒªÖ±½Ó·¢ËÍSignaling Command.ÐèÒª½¨Á¢SOCK_RAWÀàÐ͵ÄL2CAPÁ¬½ÓSocket¡£ÕâÑù²ÅÓлú»á×Ô¼ºÌî³äCommand Code£¬Identi ......

ʵսLinux Bluetooth±à³Ì (Æß) SDPЭÒé

Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖЭÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀЭÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......

LINUX, ¾­Ñé×ܽá, ²ËÄñ, ÈýÈËÐÐ, ѧϰ


LINUX, ¾­Ñé×ܽá, ²ËÄñ, ÈýÈËÐÐ, ѧϰ
Ò»¡¢LINUX½éÉÜ
Linux£ºLinuxÊÇÓÉ·ÒÀ¼´óѧµÄLinus TorvaldÀî納˹·¢Æð´´½¨µÄ¿ªÔ´Èí¼þÏîÄ¿¡£
°æ±¾ºÅxx.yy.zz £º¢Ù.xx±íΪÖ÷°æ±¾ºÅ£¬yyΪ´Î°æ±¾ºÅ£¬zzΪÐÞ¶©µÄ°æ±¾ºÅ¡£¢Ú.´Î°æ±¾ºÅÖУ¬µ¥Êý´ú±í²âÊ԰棬˫Êý´ú±íÕýʽ·¢Ðаæ
¿ªÔ´Èí¼þ£º¢ÙÔ´´úÂ뿪·Å¡£
¢ÚGPLЭÒ飺Ö÷ÒªÊÇÒÔÔ´´ú ......

linux ÏÔ¿¨Çý¶¯ °²×°

Ŀ¼£º
£¨1£©Ó²¼þÅäÖÃÎÊÌ⣺
£¨2£©×î¼òµ¥µÄATI»òNvidiaÏÔ¿¨×îйٷ½Çý¶¯°²×°·½·¨£º
£¨3£©Èç¹ûÏÔ¿¨°²×°ºó£¬ÖØÆôµçÄÔºÚÆÁÔõô°ì£¿
£¨4£©×°ÁËÐÂÏÔ¿¨Çý¶¯£¬¶¼ºÚÆÁÁË£¬Ôõô»ØͼÐνçÃ棿ÄѵÀÖ»ÄÜÓûØXP²»³É£¿
£¨5£©Èç¹ûÒ»ÇÐ˳Àû£¬ÏÔ¿¨¹Ù·½Çý¶¯¾ÍÒѾ­ÕýÈ·°²×°ÁË¡£
£¨6£©ÏÔ¿¨Çý¶¯×°ºÃÁË£¬°²×°compiz fusionÊÔÓÃ3D×ÀÃæ¡£
£¨7£ ......

linux fcitx ÊäÈë·¨

µÚÒ»²¿·Ö£ºÂÒÂëÎÊÌâ
1.´ò¿ªÖնˣ¬ÊäÈë fc-list ²é¿´ËùÓеÄ×ÖÌå ÕÒµ½ÈÎÒâÒ»¸öÖÐÎĵģ¬È磺
ÎĶ¦£Ð£Ì¼ò±¨ËÎ,AR PL SungtiL GB:style=Regular
ÎÄȪæäÕýºÚ,ÎÄȪ驛ÕýºÚ,WenQuanYi Zen Hei:style=ÖеÈ,Medium £¨Õâ¸öÄã°²×°ÁËÎÄȪæäÕýºÚ²ÅÓУ©

2.ÔÙÕÒµ½~/.fcitx/configÎļþ£¬ ¼´ÔÚÖÕ¶ËÊäÈë gedit ~/.fcitx/conf ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ