1. ԭӲ
ԭӲִָйвᱻĴ·жϵĲ
ԭӲ
atomic_t v = ATOMIC_INIT(0);     //ԭӱvʼΪ0
atomic_read(atomic_t *v);        //ԭӱֵ
void atomic_inc(atomic_t *v);    //ԭӱ1
void atomic_dec(atomic_t *v);    //ԭӱ1
int atomic_dec_and_test(atomic_t *v); //ԼǷΪ0Ϊ0򷵻true򷵻false

2. ź
źsemaphoreڱٽһֳ÷ֻеõźĽִ̲ٽ롣
ȡźʱ̽ߵȴ״̬

ź
struct semaphore sem;
ʼź
void sema_init (struct semaphore *sem, int val);
void init_MUTEX(struct semaphore *sem);//ʼΪ0

static DECLARE_MUTEX(button_lock);     //廥

ź
void down(struct semaphore * sem);
int down_interruptible(struct semaphore * sem); 
int down_trylock(struct semaphore * sem);
ͷź
void up(struct semaphore * sem);

3. 
    
ִָ豸ʱܻԴֱ̣ɲٽв
Ľ̽״̬ӵжߣֱȴ㡣

  
ڲܽ豸ʱ߷߲ͣزѯֱԽвΪֹ

fd = open("...", O_RDWR | O_NONBLOCK); 

