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_lock_t
spinlock_t
typedef struct {
volatile unsigned int lock;
}
spinlock_t;
struct list_head {
struct list_head *next, *prev;
};
Õâ
ÑùÆäʵ×ܹ²ÓÐÁË3¸ö±äÁ¿
wait_q.lock.lock volatile unsigned int
wait_q.task_list.next struct
list_head *
wait_q.task_list.prev struct list_head *
¶¨ÒåÁ˵ȴý¶ÓÁкóÐèÒª½ø
Ðгõʼ»¯
init_waitqueue_head(&wait_q);
static inline void
init_waitqueue_head(wait_queue_head_t *q)
{
q->lock =
WAITQUEUE_RW_LOCK_UNLOCKED;
INIT_LIST_HEAD(&q->task_list);
}
#define
WAITQUEUE_RW_LOCK_UNLOCKED SPIN_LOCK_UNLOCKED
#define
SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
#define INIT_LIST_HEAD(ptr) do {
\
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
Õâ
ÑùÔÚ³õʼ»¯µÈ´ý¶ÓÁÐwait_qºó£¬
wait_q.lock.lock=0;
wait_q.task_list.next=&(wait_q.task_list)
wait_q.task_list.prev=&(wait_q.task_list)
µ±
Ȼϵͳ»¹¸øÁËÁíÍâÒ»ÖÖÔÚ±àÒëʱ³õʼ»¯µÄ¶¨Òå·½·¨
#define DECLARE_WAIT_QUEUE_HEAD(name) \
wait_queue_head_t
name = __WAIT_QUEUE_HEAD_INITIALIZER(name)
#define
__WAIT_QUEUE_HEAD_INITIALIZER(name) { \
lock: WAITQUEUE_RW_LOCK_UNLOCKED, \
task_list: {
&(name).task_list, &(name).task_list }
}
½á¹ûÏÔÈ»ºÍÉÏÒ»ÖÖ·½·¨Ïàͬ,²»¹ý
Õâ¸öms±È½Ï¼òµ¥.
ÏÂÃæËµµÄÊÇÒª¼ÓÈëµÈ´ý¶ÓÁÐÖеĵȴýÏî
DECLARE_WAITQUEUE(wait, current);
Ò»
ÖÖ¼òµ¥µÄ¶¨Òå·½·¨
#define DECLARE_WAITQUEUE(name, tsk) \
wait_queue_t
name = __WAITQUEUE_INITIALIZER(name, tsk)
#define
__WAITQUEUE_INITIALIZER(name, tsk) { \
task:
Ïà¹ØÎĵµ£º
Çý¶¯±à³ÌºËÐÄÀíÂÛÖ®²¢·¢¿ØÖÆ
²¢·¢£¬¾¹Ì¬µÄÀí½â£ºÒ²¾ÍÊÇLinuxµÄ¶«Î÷ÔÚʱ¼äºÍ¿Õ¼ä±»Í¬Ê±Ê¹Óõ¼ÖµÄÎÊÌâ
LinuxϵͳÌṩµÄ½â¾ö·½°¸£º
ÖÐ¼ÌÆÁ±Î
Ô×Ó²Ù×÷
×ÔÐýËø
ÐźÅÁ¿
1,ÖÐ¶ÏÆÁ±Î
Ê×ÏÈÕâ¸öÒÀÀµ ......
4ÔÂ29ÈÕÏûÏ¢£¬ÔÚ¸Õ¸Õ½áÊøµÄ°ÍÈûÂÞÄÇ2010ÊÀ½çÒÆ¶¯´ó»áÉÏ£¬LinuxÖÇÄܲÙ×÷ϵͳ¼Ò×åÁ½¹ÉÊÆÁ¦ºÏ²¢£¬¼´Ó¢ÌضûµÄMoblinÓëŵ»ùÑǵÄMaemo£¬ºÏ²¢ºóÆôÓÃÐÂÃûMeeGo£¬²¢½»ÓÉLinux»ù½ð»á¹ÜÀí¡£
MeeGoÎÊÊÀÐÂÎÅÒ»³ö¾ÍÈçÃÍ»¢ÏÂɽ£¬Òý·¢Òµ½ç¹ã·º¹Ø×¢ºÍÈÈÒé¡£Ë˵ӢÐÛ²»Îʳö´¦£¿ÏȲ»ÂÛδÀ´ÊÇ·ñÈý·ÖÌì϶øµÃÆäÒ»£¬ÕýÊÇÒòΪÆä³öÉíÏÔ¹ó£¬MeeGo²ÅÎ ......
manÊÇmanual£¨ÊֲᣩµÄËõд
man¿ÉÒÔÔÚ²»Í¬µÄ°æ±¾ÖÐʹÓã¬Ö÷Òª·ÖΪÁ½Àà¡£Red HatºÍÐí¶àÆäËû»ùÓÚRPMµÄ°æ±¾Ê¹Óô«Í³µÄman³ÌÐò£¬¶ø»ùÓÚDebianµÄ°æ±¾Ê¹ÓÃÒ»¸öÃûΪman-dbµÄÈí¼þ°ü¡£
man£¨1£©
ÔÚÎı¾´°¿ÚÖÐä¯ÀÀÎļþµÄ·½Ê½ÔÚÆÕ±éʹÓÃHTMLºÍPDFµÄʱ´úÖÐËÆºõÓÐЩ¹ýʱÁË£¬µ«ÔÚÖÕ¶Ë´°¿ÚÖÐÔĶÁÎļþÈÔÓÐÆäÓÅÊÆ¡£¶ÔÓÚÄÇЩLinux¿ª·¢ÕßÀ´ ......
LinuxÄÚ´æ¹ÜÀí(ÉÏ)
ÕªÒª£º±¾ÕÂÊ×ÏÈÒÔÓ¦ÓóÌÐò¿ª·¢ÕߵĽǶÈÉóÊÓLinuxµÄ½ø³ÌÄÚ´æ¹ÜÀí£¬ÔÚ´Ë»ù´¡ÉÏÖð²½ÉîÈëµ½ÄÚºËÖÐÌÖÂÛϵͳÎïÀíÄÚ´æ¹ÜÀíºÍÄÚºËÄÚ´æµØÊ¹Ó÷½·¨¡£Á¦Çó´ÓÍâ×ÔÄÚ¡¢Ë®µ½Çþ³ÉµØÒýµ¼ÍøÓÑ·ÖÎöLinuxµØÄÚ´æ¹ÜÀíÓëʹÓá£ÔÚ±¾ÕÂ×îºóÎÒÃǸø³öÒ»¸öÄÚ´æÓ³ÉäµØÊµÀý£¬°ïÖúÍøÓÑÃÇÀí½âÄÚºËÄÚ´æ¹ÜÀíÓëÓû§ÄÚ´æ¹ÜÀíÖ®¼äµØ¹ØÏµ£¬Ï£Í ......
ÕªÒª:±¾Õ½«Ïò¶ÁÕßÒÀ´Î½âÊÍÖжϸÅÄ½âÎöLinuxÖеÄÖжÏʵÏÖ»úÀíÒÔ¼°LinuxÏÂÖжÏÈçºÎ±»Ê¹Óá£×÷ΪʵÀýÎÒÃǵÚÒ»½«Ïò¡¶i386Ìåϵ½á¹¹¡·Ò»ÕÂÖдòÔìµÄϵͳ¼ÓÈëÒ»¸öʱÖÓÖжϣ»µÚ¶þ½«Îª´ó¼Ò×¢½âRTCÖжϣ¬Ï£Íûͨ¹ýÕâÁ½¸öʵÀý¿ÉÒÔ°ïÖú¶ÁÕßÕÆÎÕÖжÏÏà¹ØµÄ¸ÅÄʵÏֺͱà³Ì·½·¨¡£
ÖжÏÊÇʲô
ÖжϵĺºÓï½âÊÍÊǰëÖм䷢Éú×è¸ô¡¢Í£¶Ù»ò ......