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

LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç7 ²¢·¢¿ØÖÆ


ÖÐ¶ÏÆÁ±ÎµÄʹÓ÷½·¨£º
local_irq_disable() //¹ØÖжÏ
local_irq_enable() //¿ªÖжÏ
ÕâÁ½¸öº¯Êý¶¼Ö»ÄܽûÖ¹ºÍʹÄܱ¾cpuÄÚµÄÖжϣ¬Òò´Ë£¬²¢²»Äܽâ¾öSMP¶àcpuÒý·¢µÄ¾ºÌ¬¡£Òò´Ë£¬µ¥¶ÀʹÓÃÖÐ¶ÏÆÁ±Îͨ³£²»ÊÇÒ»ÖÖÖµµÃÍÆ¼öµÄ±ÜÃ⾺̬µÄ·½·¨£¬ËüÊÊÒËÓë×ÔÐýËøÁªºÏʹÓÃ
ÁíÍ⣬local_irq_save(flags)³ýÁ˽øÐнûÖ¹ÖжϲÙ×÷ÒÔÍ⣬»¹±£´æÄ¿Ç°cpuµÄÖжÏλÐÅÏ¢£¬local_irq_restore(flags)Ïà·´
Èç¹ûÖ»Ïë½ûÖ¹Öжϵĵװ벿£¬Ó¦¸ÃʹÓÃlocal_bh_disable()£¬Ïà·´local_bh_enable()
ÕûÐÍÔ­×Ó²Ù×÷
1¡¢ÉèÖÃÔ­×Ó±äÁ¿µÄÖµ
void atomic_set(atomic_t *v, int i); //ÉèÖÃÔ­×Ó±äÁ¿µÄֵΪi
atomic_t v = ATOMIC_INIT(0); //¶¨ÒåÔ­×Ó±äÁ¿v²¢³õʼ»¯Îª0
……
×ÔÐýËø£ºÎªÁË»ñµÃÒ»¸ö×ÔÐýËø£¬ÔÚijcpuÉÏÔËÐеĴúÂëÊ×ÏÈÐèÒªÖ´ÐÐÒ»¸öÔ­×Ó²Ù×÷£¬¸Ã²Ù×÷²âÊÔ²¢ÉèÖã¨test-and-set£©Ä³¸öÄÚ´æ±äÁ¿£¬ÓÉÓÚËüÊÇÔ­×Ó²Ù×÷£¬ËùÒÔÔڸòÙ×÷Íê³É֮ǰÆäËûÖ´Ðе¥Ôª²»¿ÉÄÜ·ÃÎÊÕâ¸öÄÚ´æ±äÁ¿¡£Èç¹û²âÊÔ½á¹û±íÃ÷ÒѾ­¿ÕÏУ¬Ôò³ÌÐò»ñµÃÕâ¸ö×ÔÐýËø²¢¼ÌÐøÖ´ÐУ»Èç¹û±»Õ¼Ó㬳ÌÐò½«ÔÚÒ»¸öСµÄÑ­»·ÄÚÖØ¸´Õâ¸ö“test-and-set”²Ù×÷£¬¼´½øÐÐËùνµÄ“×ÔÐý”¡£Ò»°ãÕâÑùʹÓÃ×ÔÐýËø£º
spinlock_t lock; //¶¨Òå×ÔÐýËø
spin_lock_init(&lock); //³õʼ»¯×ÔÐýËø
spin_lock(&lock); //»ñµÃ×ÔÐýËø£¬±£»¤ÁÙ½çÇø
spin_unlock(&lock); //½âËø
×ÔÐýËøÑÜÉúÌåÖÆ£º
 
×¢Ò⣺
1¡¢Ö»ÓÐÔÚÕ¼ÓÃËøµÄʱ¼ä¼«¶ÌµÄÇé¿öÏ£¬Ê¹ÓÃ×ÔÐýËø²ÅÊǺÏÀíµÄ
2¡¢×ÔÐýËø¿ÉÄܵ¼ÖÂϵͳËÀËø£¬ÈçµÝ¹éʹÓÃ×ÔÐýËø£¬¼´ÒѾ­ÓµÓÐcpuµÄ½ø³ÌÏëµÚ¶þ´Î»ñµÃ¡£copy_from_userºÍcopy_to_user()ºÍkmalloc()µÈº¯Êý¶¼¿ÉÄÜÒýÆð×èÈû£¬Òò´ËÔÚ×ÔÐýËøµÄÕ¼ÓÃÆÚ¼ä²»Äܵ÷ÓÃÕâЩº¯Êý
¶Áд×ÔÐýËø£¨rwlock£©£ºÊÇÒ»ÖÖ±È×ÔÐýËøÁ£¶È¸üСµÄËø»úÖÆ£¬±£ÁôÁË“×ÔÐý”µÄ¸ÅÄͬʱֻÄÜÒ»¸öд½ø³Ì£¬Í¬Ê±¿ÉÒÔÓжà¸ö¶ÁÖ´Ðе¥Ôª£¬µ±È»£¬¶Áд²»ÄÜͬʱ½øÐÐ
˳ÐòËø£¨seqlock£©£º¶ÈÖ´Ðе¥Ôª¿ÉÒÔÔÙдִÐе¥Ôª¶Ô±»Ë³ÐòËø±£»¤µÄ¹²Ïí×ÊÔ´½øÐÐд²Ù×÷ʱÈÔÈ»¿ÉÒÔ¼ÌÐø¶Á£¬¶ø²»±ØµÈ´ýдִÐе¥ÔªÍê³Éд²Ù×÷£¬Ð´Ö´Ðе¥ÔªÒ²²»ÐèÒªµÈ´ýËùÓжÁÖ´Ðе¥ÔªÍê³É¶Á²Ù×÷²ÅÈ¥½øÐÐд²Ù×÷¡£µ«ÊÇдÓëд֮¼ä»¹ÊÇ»¥³âµÄ
ÏÞÖÆ£ºÒªÇó±»±£»¤µÄ¹²Ïí×ÊÔ´²»º¬ÓÐÖ¸Õ룬ÒòΪдִÐе¥Ôª¿ÉÄÜʹµÃÖ¸ÕëʧЧ£¬µ«¶ÁÖ´Ðе¥ÔªÈç¹ûÕýÒª·ÃÎʸÃÖ¸Õ룬½«µ¼ÖÂOops
RCU£¨Read-Copy Update£¬¶Á-¿½±´-¸üУ©£º¶ÔÓÚ±»RCU±£»¤µÄ¹²ÏíÊý¾Ý½á¹¹£¬¶ÁÖ´Ðе¥Ôª²»ÐèÒª»ñµÃÈκÎËø¾Í¿ÉÒÔ·ÃÎÊËü£


Ïà¹ØÎĵµ£º

arm linux µÈ´ý¶ÓÁмòµ¥·ÖÎö

Author-------Dansen-----xzd2734@163.com
wait_queue_head_t wait_q;
Ê×ÏÈ¿´¿´
wait_queue_head_tÕâ¸öµÈ´ý¶ÓÁеĽṹ
ÔÚwait.hÖж¨ÒåÁËÕâ¸ö½á¹¹
typedef struct
__wait_queue_head wait_queue_head_t;
struct __wait_queue_head {
 wq_lock_t
lock;
 struct list_head task_list;
};
# define wq_ ......

LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç2 Çý¶¯Éè¼ÆµÄÓ²¼þ»ù´¡

´¦ÀíÆ÷µÄ·ÖÀ࣬ÈçÏÂͼËùʾ£º
´æ´¢Æ÷¿É·ÖΪֻ¶Á´æ´¢Æ÷£¨ROM£©¡¢ÉÁ´æ£¨Flash£©¡¢Ëæ»ú´æÈ¡´æ´¢Æ÷£¨RAM£©¡¢¹â½éÖÊ´æ´¢Æ÷ºÍ´Å½éÖÊ´æ´¢Æ÷
Nor FlashºÍcpuµÄ½Ó¿ÚÊôÓÚµäÐ͵ÄÀàSRAM½Ó¿Ú£¬²»ÐèÒªÔö¼Ó¶îÍâµÄ¿ØÖƵç·¡£Nor FlashµÄÌØµãÊÇ¿ÉоƬÄÚÖ´ÐУ¬³ÌÐò¿ÉÒÔÖ±½ÓÔÚNorÄÚÔËÐС£¶øNand FashºÍcpuµÄ½Ó¿Ú±ØÐëÓÉÏàÓ¦µÄ¿ØÖƵç·½øÐÐת»»£ ......

LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç3 LinuxÄں˼°Äں˱à³Ì


ÔÚÉ豸Çý¶¯·½Ã棬Linux2.6Ïà¶ÔÓÚLinux2.4ÓнϴóµÄ¸Ä¶¯£¬ÕâÖ÷Òª±íÏÖÔÚÄÚºËAPIÖÐÔö¼ÓÁ˲»ÉÙй¦ÄÜ£¨ÈçÄÚ´æ³Ø£©¡¢sysfsÎļþϵͳ¡¢ÄÚºËÄ£¿é´Ó.o±äΪ.ko¡¢Çý¶¯Ä£¿é±àÒ뷽ʽ¡¢Ä£¿éʹÓüÆÊý¡¢Ä£¿é¼ÓÔØºÍÐ¶ÔØº¯ÊýµÄ¶¨ÒåµÈ·½Ãæ
LinuxÄÚºËÖ÷ÒªÓнø³Ìµ÷¶È¡¢ÄÚ´æ¹ÜÀí¡¢ÐéÄâÎļþϵͳ¡¢ÍøÂç½Ó¿ÚºÍ½ø³Ì¼äͨÐŵÈ5¸ö×Óϵͳ×é³É£¬ÈçÏÂͼ£º ......

Linuxѧϰ³õ¼Ç


ÎҵĵÚÒ»¸öshell³ÌÐò£ºtt1.sh
while true
do
       date;
       sleep 1;
done
Ö´Ðз½Ê½1£ºsh tt1.sh
Ö´Ðз½Ê½2£º./tt1.sh£¨ÒªÇó¸ÃÎļþÓпÉÖ´ÐÐȨÏÞ£©
Shell±äÁ¿£º
»·¾³±äÁ¿£º
       ¹¤¾ß£ºecho »ØÏÔ
 &n ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ