The KSEG_TO_PHYS routine converts a kernel-unmapped virtual address to a kernel physical address. Device drivers can use this physical address in DMA operations. Prior to calling KSEG_TO_PHYS, device ...
You use the lbolt global variable as a periodic wakeup mechanism. Wakeups are done on the lbolt variable once per second. For example, if a kernel module was polling for an event once per second, you ...
The linkb interface creates a new message by adding the message specified in the message_to_be_added argument to the tail of the message specified in the message argument. The continuation pointer (th...
The lock data structure is the complex lock structure that contains complex lock-specific information. A kernel module writer using the complex lock method declares a pointer to a lock data structure ...
The lock_done routine releases a lock that was previously asserted by one of the following complex lock routines: lock_read, lock_try_read, lock_try_write, and lock_write.
The lock_init routine initializes a complex lock. You identify this lock by declaring a pointer to a complex lock structure and passing it as the first argument. The complex lock structure pointer mus...
The lock_read routine asserts a lock with read-only access for the resource associated with the specified lock structure pointer. The lock_read routine allows multiple kernel threads to access the res...
The lock_terminate routine determines that the driver is done using the complex lock forever. The complex lock must be free (that is, the driver does not hold the lock) before calling lock_terminate. ...
The lock_try_read routine tries to assert a complex lock (without blocking) with read-only access for the resource associated with the specified lock structure pointer. To release a complex lock with ...
The lock_try_write routine tries to assert a complex lock (without blocking) with write access for the resource associated with the specified lock structure pointer. To release a complex lock with wri...
The lock_write routine asserts a lock with exclusive write access for the resource associated with the specified lock structure pointer. This means that once a write lock is asserted, no other kernel ...
The MALLOC routine (macro) allocates at least size bytes from the kernel memory and returns the address of the allocated memory. A kernel module can allocate the memory in interrupt and process contex...
The Alpha architecture does not guarantee read/write ordering. That is, the memory subsystem is free to complete read and write operations in any order that is optimal, without regard for the order in...
The mpsleep routine blocks (puts to sleep) the current kernel thread until a wakeup is issued on the address you specify in the channel argument. This routine is the symmetric multiprocessor (SMP) sle...
The msgdsize interface counts the number of bytes in a data message. Only bytes included in the data blocks with a message type of M_DATA (ordinary data) is included in the count.