Writing Device Drivers

Kernel Thread Control and Synchronization Functions

The kernel thread control and synchronization functions are:

cv_broadcast()

Wake up all waiting threads

cv_destroy()

Free an allocated condition variable

cv_init()

Allocate a condition variable

cv_signal()

Wake up one waiting thread

cv_timedwait()

Await an event with timeout

cv_timedwait_sig()

Await an event or signal with timeout

cv_wait()

Await an event

cv_wait_sig()

Await an event or signal

ddi_can_receive_sig()

Determine whether the current thread can receive a signal

ddi_enter_critical()

Enter a critical region of control

ddi_exit_critical()

Exit a critical region of control

mutex_destroy()

Destroy mutual exclusion lock

mutex_enter()

Acquire mutual exclusion lock

mutex_exit()

Release mutual exclusion lock

mutex_init()

Initialize mutual exclusion lock

mutex_owned()

Determine whether current thread is holding mutual exclusion lock

mutex_tryenter()

Attempt to acquire mutual exclusion lock without waiting

rw_destroy()

Destroy a readers/writer lock

rw_downgrade()

Downgrade a readers/writer lock holding from writer to reader

rw_enter()

Acquire a readers/writer lock

rw_exit()

Release a readers/writer lock

rw_init()

Initialize a readers/writer lock

rw_read_locked()

Determine whether readers/writer lock is held for read or write

rw_tryenter()

Attempt to acquire a readers/writer lock without waiting

rw_tryupgrade()

Attempt to upgrade readers/writer lock holding from reader to writer

sema_destroy()

Destroy a semaphore

sema_init()

Initialize a semaphore

sema_p()

Decrement semaphore and possibly block

sema_p_sig()

Decrement semaphore but do not block if signal is pending

sema_tryp()

Attempt to decrement semaphore but do not block

sema_v()

Increment semaphore and possibly unblock waiter