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

Linux Kernel時ÐòµÄÈý種機ÖÆ

×î½üÔÚ寫Driver時£¬³£³£Óöµ½ÐèÒª¡¸µÈ´ýÒ»¶Î時間¡¹ÔÙ處ÀíµÄ動×÷£¬ÒÔÍùÎÒ¶¼ÉµÉµµÄÓÃmsleep()»òmdelay()£¬Êâ²»Öª這種busy waiting會holdסcpu資Ô´£¬ÔÚ這¶ÎÆÚ間內¶¼無·¨讓給ÆäËûprocess執ÐУ¬時間¶Ì(10msÒÔϵÈ級)»ò許還¿ÉÒÔ£¬Ì«長¾Í²»ÐÐÁË£¬ËùÒÔÐèÒªKernel±¾Éí¾ÍÓÐÌṩµÄ¡¸時Ðò¡¹機ÖÆ來×ö處Àí£¬ì¶ÊÇÎÒ漸漸學會ÁËÈçºÎʹÓÃTimer¡¢TaskletºÍWorkqueueµÄÓ÷¨£¬ÔÚO'ReillyµÄLinux Device DriversµÚÆßÕÂÓÐ詳細µÄ講½â£¬ÎÒ將書Éϵľ«華茲簡單ÕûÀíÈçÏ£º
##CONTINUE##
Ò»¡¢Timer
#include <linux/timer.h>
struct timer_list
{
/* ... */
unsigned long expires;//ÆÚÍû運ÐÐµÄ jiffies Öµ
void (*function)(unsigned long);
unsigned long data;//傳給functionµÄ參數
};//ʹÓÃÇ°±Ø須³õʼ»¯
void init_timer(struct timer_list *timer);
//³õʼ»¯Ò»個timer_list
struct timer_list TIMER_INITIALIZER(_function, _expires, _data);
//³õʼ»¯Ò»個靜態µÄtimer_list
void add_timer(struct timer_list * timer);
int mod_timer(struct timer_list *timer, unsigned long expires);
int del_timer(struct timer_list * timer);
int del_timer_sync(struct timer_list *timer);
//ͬ del_timer Ò»樣,µ«±£證º¯數return時£¬¶¨時Æ÷º¯數²»ÔÚÈκΠCPU ÉÏ運ÐÐ
//±ÜÃâÔÚSMP ϵ統ÉÏ競爭
int timer_pending(const struct timer_list * timer);
//·µ»ØÕæ»ò¼Ù來ָʾÊÇ·ñ¶¨時Æ÷Òѱ»運ÐÐ
¶þ¡¢Tasklet
#include <linux/interrupt.h>
struct tasklet_struct {
/* ... */
void (*func)(unsigned long);
unsigned long data;
};
void tasklet_init(struct tasklet_struct *t,
void (*func)(unsigned long), unsigned long data);
//將¶¨義ºÃµÄ結構體³õʼ»¯£¬²Å¿ÉÓÃ
DECLARE_TASKLET(name, func, data);
//Ö±½ÓÉêÃ÷¾Í¿ÉÓÃÁË
DECLARE_TASKLET_DISABLED(name, func, data);
void tasklet_disable(struct


Ïà¹ØÎĵµ£º

ʵսLinux Bluetooth±à³Ì£¨Èý£© HCI²ã±à³Ì

1. HCI²ãЭÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI)  ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈЭÒé ......

LinuxϵͳÓÐÓõÄÒ»¸öÃüÁî

¸ú×ÙϵͳµÄÊä³ö:
     strace
     ÀýÈç:  strace -p 9034  -x -s 2048
     -p   ½ø³ÌºÅ
     -x    ²»ÊÇASCIIµÄÊä³öÓÃHEX±íʾ
     -s    ÿ´ÎÊä³öµ ......

linux ÏÂͨ¹ýwine ÔËÐÐwindows³ÌÐò°üÀ¨IE

Ubuntu9.10 ¾ÙÀý£¨ÒòΪËü·½±ã£¬N¶à¶«Î÷Ò»Ö±½ÓÔÚÏß°²×°£¬Ê¡µÃ±àÒëÁË£©£¬ÆäËûlinux»ù±¾Ïàͬ£¨²»Í¬µÄ¾ÍÊÇÓÐЩҪ½øÐÐÔ´Âë°²×°£¬µ«Óõ½µÄÈí¼þÊÇÒ»ÑùµÄ£©£¬Õû¸ö°²×°ÎÒÒÔ¾­×ö³É½Å±¾·Å·½±ãÏÂÔØ°²×°
°²×°ies4linuxÖв¿·Ö²Î¿¼×Ô£ºhttp://hi.baidu.com/unknown379/blog/item/df70c3ef54742d31adafd506.html
Éæ¼°µÄÈí¼þ
1¡¢wine£¬ÊÇÒ ......

LinuxϱéÀúijÎļþ¼ÐÏÂÎļþ£¨²»µü´ú½øÈë×ÓĿ¼£©

Ô­ÎĵØÖ·£ºhttp://www.wangzhongyuan.com/archives/487.html
ÒÔÏÂÊÇÒ»¸öLinux/UnixÏÂÏÔʾijһĿ¼ÏÂÎļþÁбíµÄC³ÌÐò£¬Ï൱ÓÚ×î»ù±¾µÄlsÃüÁîµÄ¹¦ÄÜ£¬ÏÔʾµÄÄÚÈݱ¨¸æ¸ÃĿ¼ÏµÄ×ÓĿ¼ÒÔ¼°ÎļþÃû:
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <errno.h>
int m ......

Linux¶àÏ̱߳à³ÌµÄ»ù±¾µÄº¯Êý

  º¯ÊýÔ­ÐÍ£º                  
#include <pthread.h>
int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr, void *(*start_rtn)( ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ