Linux内核原语(一)——汇总

 

 

Linux内核原语(一)——汇总

小狼@http://blog.csdn.net/xiaolangyangyang

 


并发与竞争类型操作函数与宏
1.每CPU变量DEFINE_PER_CPU(type,name)
per_cpu(name,cpu)
__get_cpu_var(name)
get_cpu_var(name)
put_cpu_var(name)
alloc_percpu(type)
free_percpu(pointer)
per_cpu_ptr(pointer,cpu)
2.原子操作原子操作atomic_read(v)
atomic_set(v,i)
atomic_add(i,v)
atomic_sub(i,v)
atomic_sub_and_test(i,v)
atomic_inc(v)
atomic_dec(v)
atomic_dec_and_test(v)
atomic_inc_and_test(v)
atomic_add_negative(i,v)
atomic_inc_return(v)
atomic_dec_return(v)
atomic_add_return(i,v)
atomic_sub_return(i,v)
atomic_clear_mask(mask,addr)
atomic_set_mask(mask,addr)
原子位操作test_bit(nr,addr)
set_bit(nr,addr)
clear_bit(nr,addr)
change_bit(nr,addr)
test_and_set_bit(nr,addr)
test_and_clear_bit(nr,addr)
test_and_change_bit(nr,addr)
3.内存屏障mb()
rmb()
wmb()
smp_mb()
smp_rmb()
smp_wmp()
4.自旋锁自旋锁spin_lock_init()
spin_lock()
spin_lock_irqsave()
spin_lock_irq()
spin_lock_bh()
spin_trylock()
spin_trylock_bh()
spin_unlock()
spin_unlock_irqrestore()
spin_unlock_irq()
spin_unlock_bh()
读写者自旋锁rwlock_init()
read_unlock_bh()
read_unlock_irq()
read_unlock()
read_unlock_irqrestore()
read_lock_bh()
read_lock_irq()
read_lock_irqsave()
read_lock()
write_trylock()
write_unlock()
write_unlock_irqrestore()
write_unlock_irq()
write_unlock_bh()
write_lock()
write_lock_irqsave()
write_lock_irq()
write_lock_bh()
5.信号量(旗标)信号量sema_init()
DECLARE_MUTEX(name)
DECLARE_MUTEX_LOCKED(name)
init_MUTEX(struct semaphore *sem)
init_MUTEX_LOCKED(struct semaphore *sem)
down(struct semaphore *sem)
down_interruptible(struct semaphore *sem)
down_trylock(struct semaphore *sem)
up(struct semaphore *sem)
读写者信号量init_rwsem()
down_read()
down_read_trylock()
up_read()
down_write()
down_write_trylock()
up_write()
downgrade_write()
6.顺序锁 seqlock_init(x)
DEFINE_SEQLOCK(x)
写操作write_seqlock(seqlock_t* sl)
write_tryseqlock(seqlock_t* sl)
write_seqlock_irqsave(lock, flags)
write_seqlock_irq(lock)
write_seqlock_bh(lock)
write_sequnlock(seqlock_t* sl)
write_sequnlock_irqrestore(lock, flags)
write_sequnlock_irq(lock)
write_sequnlock_bh(lock)
读操作read_seqbegin(const seqlock_t* sl)
read_seqbegin_irqsave(lock, flags)
read_seqretry(const seqlock_t* sl, unsigned start)
read_seqretry_irqrestore(lock, iv, flags)
7.完成量init_completion(&my_completion)
DECLARE_COMPLETION(my_completion)
wait_for_completion()
complete()
INIT_COMPLETION()
complete_all()
complete_and_exit()
8.互斥体mutex_init(&my_mutex)
mutex_lock(struct mutex* lock)
mutex_lock_interruptible(struct mutex* lock)
mutex_trylock(struct mutex* lock)
mutex_unlock(struct mutex* lock)
mutex_is_locked(struct mutex* lock)
mutex_lock_interruptible(struct mutex* lock)
mutex_lock_killable(struct mutex* lock)
 9.本地中断的禁止 (中断操作)local_irq_disable(void)
10.本地软中断的禁止(软中断操作)local_bh_disable(void)
11.RCU 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值