编写设备驱动程序

内核线程控制和同步函数

内核线程控制和同步函数包括:

cv_broadcast()

唤醒所有等待线程

cv_destroy()

释放已分配的条件变量

cv_init()

分配条件变量

cv_signal()

唤醒一个等待线程

cv_timedwait()

等待事件,具有超时设置

cv_timedwait_sig()

等待事件或信号,具有超时设置

cv_wait()

等待事件

cv_wait_sig()

等待事件或信号

ddi_can_receive_sig()

确定当前线程是否可以接收信号

ddi_enter_critical()

进入关键控制区

ddi_exit_critical()

退出关键控制区

mutex_destroy()

销毁互斥锁

mutex_enter()

获取互斥锁

mutex_exit()

释放互斥锁

mutex_init()

初始化互斥锁

mutex_owned()

确定当前线程是否持有互斥锁

mutex_tryenter()

尝试获取互斥锁,但不等待

rw_destroy()

销毁读取器/写入器锁

rw_downgrade()

将持有的读取器/写入器锁从写入器降级为读取器

rw_enter()

获取读取器/写入器锁

rw_exit()

释放读取器/写入器锁

rw_init()

初始化读取器/写入器锁

rw_read_locked()

确定持有的读取器/写入器锁是用于读取还是用于写入

rw_tryenter()

尝试获取读取器/写入器锁,但不等待

rw_tryupgrade()

尝试将持有的读取器/写入器锁从读取器升级为写入器

sema_destroy()

销毁信号

sema_init()

初始化信号

sema_p()

递减信号并可能阻塞

sema_p_sig()

递减信号,但信号待处理时不阻塞

sema_tryp()

尝试递减信号,但不阻塞

sema_v()

递增信号并可能解除阻塞等待程序