11.01.2013 Views

IBM AIX Continuous Availability Features - IBM Redbooks

IBM AIX Continuous Availability Features - IBM Redbooks

IBM AIX Continuous Availability Features - IBM Redbooks

SHOW MORE
SHOW LESS

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>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!