函数参考
自旋锁
- void spin_lock(spinlock_t *lock): 获取指定的锁,如果锁不可用则自旋等待,直到可用。
- void spin_lock_irq(spinlock_t *lock): 类似于 spin_lock,但也会禁用本地处理器的中断。
- void spin_lock_irqsave(spinlock_t *lock, unsigned long flags): 类似于 spin_lock_irq,但也会将当前中断状态保存在 flags 中。
- void spin_lock_bh(spinlock_t *lock): 类似于 spin_lock,但也会禁用所有软中断的执行。
- void spin_unlock(spinlock_t *lock), void spin_unlock_irq(spinlock_t *lock), void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags) 和 void spin_unlock_bh(spinlock_t *lock): 以上函数的对应版本,用于释放锁。
- void spin_trylock(spinlock_t *lock): 如果当前持有锁则返回非零值,否则返回零。
- void read_lock(rwlock_t *lock) 和 void read_unlock(rwlock_t *lock): 锁定/解锁读写自旋锁的读取版本。
- void write_lock(rwlock_t *lock) 和 void write_unlock(rwlock_t *lock): 锁定/解锁读写自旋锁的写入版本。
信号量
- void sema_init(struct semaphore *sem, int val): 使用给定的使用计数初始化给定的信号量。
- void down(struct semaphore *sem): 尝试获取给定的信号量,如果不可用则阻塞。
- int down_interruptible(struct semaphore *sem): 类似于 down,但如果收到信号,则返回 -EINTR。
- int down_trylock(struct semaphore *sem): 类似于 down,但如果信号量不可用,则立即返回非零值。
- void up(struct semaphore *sem): 释放给定的信号量。
- void init_rwsem(struct rw_semaphore *rwsem): 将给定的读写信号量初始化为 1。
- void down_read(struct rw_semaphore *rwsem) 和 void up_read(struct rw_semaphore *rwsem): 用于读取给定读写信号量的 up/down 操作。
- void down_write(struct rw_semaphore *rwsem) 和 void up_write(struct rw_semaphore *rwsem): 用于写入给定读写信号量的 up/down 操作。
大内核锁 (Big Kernel Lock)
- void lock_kernel(): 尝试获取大内核锁 (BKL)。
- void unlock_kernel(): 释放 BKL。
- int kernel_locked(): 如果当前已获取 BKL 则返回 true,否则返回 false。
抢占禁用
- void preempt_disable(): 增加抢占计数器。
- void preempt_enable(): 减少抢占计数器,并在需要时允许抢占式重新调度。
- void preempt_enable_no_resched(): 减少抢占计数器。
- int preempt_get_count(): 返回抢占计数器的当前值。
© . All rights reserved.