Generic data link control (GDLC) provides special services for a kernel user. However, a trusted environment must exist within the kernel. Instead of the DLC device manager copying asynchronous event data into user space, the kernel user must specify function pointers to special routines called function handlers. Function handlers are called by DLC at the time of execution. This process allows maximum performance between the kernel user and the DLC layers. Each kernel user is required to restrict the number of function handlers to a minimum path length and use the communications memory buffer (mbuf) scheme.
The user-provided function handlers are:
datagram data received | Called any time a datagram packet is received for the kernel user. |
exception condition | Called any time an asynchronous event occurs that must notify the kernel user, such as SAP Closed or Station Contacted. |
I-frame data received | Called each time a normal sequenced data packet is received for the kernel user. |
network data received | Called any time network-specific data is received for the kernel user. |
XID data received | Called any time an exchange identification (XID) packet is received for the kernel user. |
The dlcread and dlcselect entry points for DLC are not called by the kernel user because the asynchronous functional entries are called directly by the DLC device manager. Generally, any queuing of these events must occur in the user's function handler. If, however, the kernel user cannot handle a particular receive packet, the DLC device manager may hold the last receive buffer and enter one of two special user-busy modes: