Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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±£»¤µÄ¹²ÏíÊý¾Ý½á¹¹£¬¶ÁÖ´Ðе¥Ôª²»ÐèÒª»ñµÃÈκÎËø¾Í¿ÉÒÔ·ÃÎÊËü£


Ïà¹ØÎĵµ£º

Linux iptableÎĵµ

×ÜÀÀ
ÓÃiptables -ADC À´Ö¸¶¨Á´µÄ¹æ
Ôò
£¬-AÌí¼Ó -Dɾ³ý -C ÐÞ¸Ä
iptables - [RI] chain rule num rule-specification[option]
ÓÃiptables - RI ͨ¹ý¹æÔòµÄ˳ÐòÖ¸¶¨
iptables -D chain rule num[option]
ɾ³ýÖ¸¶¨¹æÔò
iptables -[LFZ] [chain][option]
ÓÃiptables -LFZ Á´Ãû [Ñ¡Ïî]
iptables -[NX] chain
ÓÃ -NX ......

Linux »ñȡϵͳʱ¼ä

1.ʱ¼ä±íʾ
ÔÚ³ÌÐòµ±ÖÐ,ÎÒÃǾ­³£ÒªÊä³öϵͳµ±Ç°µÄʱ¼ä,±ÈÈçÎÒÃÇʹÓÃdateÃüÁîµÄÊä³ö½á¹û¡£Õâ¸öʱºòÎÒÃÇ¿ÉÒÔʹÓÃÏÂÃæÁ½¸öº¯Êý
time_t time(time_t *tloc);                    //ʱ¼ä¾«¶ÈΪÃë
char *ctime(const time_ ......

Linux ¶¨Ê±Æ÷

ʱ¼ä¼ä¸ô¶¨Ê±Æ÷
interval timer(ʱ¼ä¼ä¸ô¶¨Ê±Æ÷)ϵͳµ÷ÓÃ×Ô´Ó±»POSIX±ê×¼»¯ºó£¬Ê״γöÏÖÓÚ4.2BSD£¬Äܹ»Ìṩ±Èalarm()»¹¶àµÄ¿ØÖÆ£º
#include <sys/time.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
interval ti ......

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

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

ÈÃǶÈëʽLinuxÖ§³ÖÆÕͨUSBÉãÏñÍ·

ÎÒÓõÄÊÇ×îÆÕͨµÄusbÉãÏñÍ·£¬Ö÷оƬΪÖÐÐÇ΢ZC0301P£¨¾Ý˵Êг¡Õ¼ÓÐÂÊ70£¥ÒÔÉÏ£©£¬COMS´«¸ÐÆ÷ΪhynixµÄhv7131e1,ÊÐÃæÉÏÄÜÂòµ½µÄ»ù±¾ÉÏÊÇÕâÖÖÅäÖá£
    linuxÏÂÇý¶¯£¬ÎÒÖ±½ÓÒÆÖ²spca5xx£¬ÏÖÔÚ³öÁËspc5xx-le£¨Light-Edition for Linux Embedded£©¸ü·½±ã£¬Ö±½ÓÕë¶ÔǶÈëʽϵͳ×öÁËÓÅ»¯£¬¿ÉÒԲο¼ÕâÀïhttp://mxh ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ