IBM AIX Continuous Availability Features - IBM Redbooks
IBM AIX Continuous Availability Features - IBM Redbooks
IBM AIX Continuous Availability Features - IBM Redbooks
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
might share a given hardware key. Most kernel keys are for use only within the kernel (the full<br />
list can be found in sys/skeys.h). Table 3-4 shows the kernel keys that are likely to be useful to<br />
kernel extension developers.<br />
Table 3-4 Useful kernel keys<br />
Key name Description<br />
KKEY_PUBLIC This kernel key is always necessary for access to a program's stack, bss,<br />
and data regions. Data allocated from the pinned_heap and the<br />
kernel_heap is also public.<br />
KKEY_BLOCK_DEV This kernel key is required for block device drivers. Their buf structs must<br />
be either public or in this key.<br />
KKEY_COMMO This kernel key is required for communication drivers. CDLI structures must<br />
be either public or in this key.<br />
KKEY_NETM This kernel key is required for network and other drivers to reference<br />
memory allocated by net_malloc.<br />
KKEY_USB This kernel key is required for USB device drivers.<br />
KKEY_GRAPHICS This kernel key is required for graphics device drivers.<br />
KKEY_DMA This kernel key is required for DMA information (DMA handles and EEH<br />
handles).<br />
KKEY_TRB This kernel key is required for timer services (struct trb).<br />
KKEY_IOMAP This kernel key is required for access to I/O-mapped segments.<br />
KKEY_FILE_SYSTEM This kernel key is required to access vnodes and gnodes (vnop callers).<br />
Note: Table 3-4 shows a preliminary list of kernel keys. As kernel keys are added to<br />
components, additional kernel keys will be defined.<br />
The current full list can be found in /usr/include/sys/skeys.h.<br />
Kernel keysets<br />
Note: Not all keys in the kernel key list are currently enforced. However, it is always safe to<br />
include them in a keyset.<br />
Because the full list of keys might evolve over time, the only safe way to pick up the set of<br />
keys necessary for a typical kernel extension is to use one of the predefined kernel keysets,<br />
as shown the following list.<br />
KKEYSET_KERNEXT The minimal set of keys needed by a kernel extension.<br />
KKEYSET_COMMO Keys needed for a communications or network driver.<br />
KKEYSET_BLOCK Keys needed for a block device driver.<br />
KKEYSET_GRAPHICS Keys needed for a graphics device driver.<br />
KKEYSET_USB Keys needed for a USB device driver.<br />
See sys/skeys.h for a complete list of the predefined kernel keysets. These keysets provide<br />
read and write access to the data protected by their keys. If you want simply read access to<br />
keys, those sets are named by appending _READ (as in KKEYSET_KERNEXT_READ).<br />
82 <strong>IBM</strong> <strong>AIX</strong> <strong>Continuous</strong> <strong>Availability</strong> <strong>Features</strong>