|
|
Glossary
abortable operation is a channel operation request that may be aborted by the initiator at any time prior to receiving the completion or exception operation for that request. Not all channel operations are abortable and the metalanguage definition will specifically define which operations are abortable.
anchored channel a channel end that has been permanently associated with a region, a set of channel operation entry points, and a channel context. Inter-module communication can only occur over a channel that has both ends anchored.
asynchronous service call an environment service call that indicates its completion through an asynchronous callback. The service is not necessarily complete and/or the callback may not have been called upon return from the initial environment function call to the calling code.
bind channel first communication channel between two driver instances, which results from the bind process.
bind process the process of associating two driver instances in a child-parent relationship, typically reflecting the relationship of the associated hardware components. This process takes place as part of driver configuration, via a set of channel operations, and results in initialization of a communications channel between the two driver instances.
buffer an opaque object used to carry "application" or "wire" data within the UDI environment. A UDI buffer is logically contiguous but may be virtually or physically segmented.
buffer handle an opaque reference to a UDI buffer.
buffer tag a tag associating a type code and a value with a particular range of data in a logical buffer, which moves with the data in the presence of insertions and deletions prior to the tagged range. If data associated with a buffer tag is modified or deleted, the tag is removed and discarded. Buffer tags are often used for network checksums.
callback a driver-provided procedure that may be called immediately or at some later time when a requested service has been performed. The callback procedure is always invoked within the same driver region as the original service request, but possibly on a different thread.
Example: Procedure foo requests a service, e.g., allocation of a block of memory. This service request specifies the address of procedure foo_callback, in addition to the amount of memory requested. If the resource is immediately available, the callback may be invoked on the requestor's thread before the request procedure returns. Otherwise, when the resource becomes available, foo_callback will be invoked by rescheduling the same region's processing on a (possibly different) thread.
channel a bidirectional communication channel between two drivers, or between a driver and the environment. Channels allow code running in one region to invoke channel operations in another region. Example of channels include the bind channel between an adapter driver instance and its parent driver instance, and the management channel between a driver instance and the Management Agent.
channel context a pointer to a driver-defined storage area, used by a driver to store state information, resources that it has allocated, etc. This pointer is associated with the end of a channel (each anchored channel end has a context associated with it), and is passed to the driver as the first parameter for every channel operation that is invoked on that channel. A channel context pointer is local to the region containing the endpoint, and is not visible from the other end of the channel.
channel handle an identifier used by a driver to refer to a channel. This handle is opaque and local to the driver region in which it is held. Channel handles are used in channel operation invocations to designate the destination of the operation.
channel operation the unit of inter-module communication over a channel. This is a function call made from one driver region that invokes a similar function call in another region on the other end of the channel. Channel operations are strongly typed. Also known as "ops".
channel operations vector the set of metalanguage-defined driver entry points for a given channel or set of channels. When the driver's init_module routine is called during initialization, it sets up at least one channel operations vector for each type of channel supported by the driver. Also known as "channel ops vector."
child driver instance of a pair of communicating driver instances, the one whose position in the device tree is farther from the root of the tree. For example, a SCSI disk is usually the child of a SCSI host bus adapter.
client a UDI module that issues requests to a provider via channel operations. A client is a type of initiator.
communications channel see channel.
completion operation is a type of channel operation that completes a corresponding request channel operation. Many channel operations are "in progress" or "pending" when they have been sent from the initiator to the responder and may need to be aborted or otherwise tracked by the initiator until such time as the request is fulfilled by receipt of the completion operation from the responder.
control block a semi-opaque object used by the UDI environment to store channel operation parameters in a region queue, when the region is busy or operating at a lower priority, or asynchronous service call parameters when the service call cannot be completed immediately. It can also used by the driver to store channel operation parameters and other contextual information internal to the driver when the operation cannot be handled to completion in one invocation. See also generic control block and metalanguage-specific control block.
destructive diagnostic request an operation that may have effects external to the driver to which the request was directed.
exception operation is an alternate type of completion operation that indicates an abnormal or exception condition occurred when processing or preparing to process the request. The responder must complete an initiator's request via an exception operation rather than a completion operation when the metalanguage provides such a facility. These types of operations are typically provided to separate the response handling from the normal datapath handling to improve performance.
external mapper an OS-specific software module having a native OS interface on one side and a UDI interface on the other. This module provides the interface between the native operating system and the "top-most" or "bottom-most" UDI driver. Since it straddles the UDI boundary, it must be viewed as two halves: half in and half out of the UDI environment. The half that is within the UDI environment must obey all rules for UDI drivers (e.g., non-blocking calls only), whereas the other half is not so restricted and may do whatever it must to satisfy the embedding system.
initiator the UDI module that initiates a channel operation request. The other end of the channel is known as the responder or provider.
IMC inter-module communication. The set of system services providing the complete data path for implementing channel operations between drivers, including all translations through metalanguage libraries, environment agents and metalanguage mappers. The process and path is totally transparent to both caller and callee
implicit synchronization UDI guarantees that only a single call to one channel operation or callback will be activated at any one time for a given region. This causes each service routine to be a critical section; safe in uniprocessor and multiprocessor systems. The region instance inherently controls thread execution within a UDI driver, and so the granularity of UDI synchronization is defined by the granularity of the regions defined by the driver.
internal metalanguage a driver-defined metalanguage used to communicate between multiple regions in a multi-region driver instance. Some drivers may choose to use the Internal Management Metalanguage as an internal metalanguage.
loose end a channel end that has not yet been anchored. Channel handles for loose ends may be transferred between regions, but those for anchored channels may not.
Management Agent the agent or set of cooperating agents within the environment that is responsible for managing drivers, including creating driver instances and binding them together to reflect the system configuration topology, including the device tree.
management channel the channel between the Management Agent and the primary region of a driver instance, used for management operations.
mapper a UDI software-only driver that maps one metalanguage to another, for example a Fibre Channel to SCSI mapper. A mapper is 100% UDI code, unlike an external mapper. Also known as an internal mapper.
marshalling see parameter marshalling.
MEI Metalanguage-to-Environment Interface. Defines the interfaces needed to implement portable metalanguage libraries. See Chapter 27, "Introduction to MEI".
metalanguage the communication protocol used by two or more cooperating modules. A metalanguage includes interface definitions for associated channel operations, control block structures, and service calls, as well as bindings to the use of UDI trace events and the definition of various types of UDI instance attributes. E.g., the SCSI Metalanguage is used for communication between SCSI peripheral drivers and SCSI HBA drivers; and the USBDI Metalanguage is used for communication between USB peripheral drivers and the USBD driver layer. When refering to a metalanguage used by a particular type of driver the adjectives "top-side" and "bottom-side" are sometimes applied: e.g., the SCSI Metalanguage is the top-side metalanguage for SCSI HBA drivers; the USBDI Metalanguage is the bottom-side metalanguage for USB peripheral drivers.
module A set of ISO C routines that completely define some I/O-related functionality. The term is also used more specifically to refer to one of possibly several independently loadable parts of a UDI driver.
non-transferable handle a handle that is not transferable. The environment is only guaranteed to understand such a handle (i.e. map it to the correct object) when used from the region for which it was originally allocated.
opaque handle an opaque reference to an environment object that must not be directly referenced by drivers. Drivers must only act on such objects by passing their handles to environment service calls. Handles provide a domain-independent, protected reference to an object. UDI handles are all region-local handles; i.e., they are only useable in the context of the caller's region and may require translation if transferred to another region (see transferable handle and nontransferable handle). See also the definitions for specific types of handles: e.g., buffer handle, channel handle, and constraints handle.
operation See channel operation.
parameter marshalling taking parameters of a channel operation and saving them in a storage area, such as in a control block. When performed within the same address domain, this merely involves copying information, but when performed in a domain-crossing operation, the parameters may need to be converted to a portable, storage-format-independent format; for example, ASN.1 or XDR.
parent driver instance of a pair of communicating driver instances, the one whose position in the device tree is closer to the root of the tree. For example, a SCSI host bus adapter is usually the child of a SCSI disk. The parent driver instance is typically the server in this relationship.
primary region the region created by the Management Agent (MA) when it creates a driver instance. Drivers may create additional regions for a given driver instance, but this one comes for free. Only primary regions have management channels, to interact with the MA.
provider is a type of responder and refers to a UDI module that provides a service to a client.
recoverablle operation is a channel operation request that is automatically returned to the initiator if the responder is unloaded or region killed while holding the request. The recoverable operation is returned, along with its associated resources, to the initiator by the UDI environment via the exception operation for that request with an appropriate status indication.
region a UDI-internal data structure containing a synchronization queue to hold incoming channel operations and callbacks when they are delayed because a non-reentrant portion of the driver code is busy or operating at a lower priority. A region may be associated with, and hold (queue) channel operations for, one or more channels. The driver-writer specifies the grouping of channels to regions when channels are anchored. Region structures are not directly visible to UDI drivers.
region attribute a driver region classification based on the general type of usage of a region and associated operational parameters. For example, there might be normal, interrupt, and low-priority regions. These properties (provided by the driver writer) are used by the platform to determine OS-dependent parameters like priority and capability privileges. These values may also be mapped to OS parameters configured by the system operator. The OS parameters that are indirectly determined by the region attribute are attached to the region at run-time and affect its handling by the UDI environment.
region kill is an operation performed by the UDI environment on a UDI driver instance when that driver instance must be removed from the environment. This is typically an abrupt operation caused by the UDI driver performing an illegal service call or channel operation. When this occurs, any recoverable operations that the killed region held will be returned to their initiator regions by the UDI environment.
responder the UDI module that receives and operates on requests received from an initiator via a channel operation. A responder is typically passive in that it responds to requests but does not typically initiate requests.
scratch space a block of driver-private space associated with a control block.
semi-opaque object a data structure that is shared between drivers and the environment but may contain environment-private data that is hidden from drivers. The UDI documents specify the "visible" fields a driver may access. The environment may store additional data before or after the visible fields. A control block is an example of a semi-opaque object.
service call a call to the environment to perform a particular service. UDI has two types of service calls: synchronous and asynchronous.
synchronous service call an environment service call that is complete upon return from the function call to the environment service and does not block.
system abort an action causing a drastic, and immediate, termination of the OS and normally stalling or rebooting of the host CPU(s). No UDI device driver is allowed to directly (and intentionally) generate a system abort.
target channel a channel handle used as the destination of a channel operation. The operation is sent to the other end of the target channel. The target channel is passed to the channel operation via the channel member of the control block.
timeout distortion the exact delay of a timeout is delimited only by the requested "floor" value provided by the original timeout call. Thus, a callback routine is subject to both the system event timing resolution of 10 mS (typical), the processing time for higher-priority actions preceding the timeout servicing, and the minimum delay requested.
transferable handle a handle that can be passed from one region to another, and subsequently be used by the other region to access the object (via environment service calls). Transferable handles in UDI must only be transferred via strictly-typed channel operation parameters, so the environment has a chance to translate the handle as appropriate for the destination region. Handles must not be passed between regions without environment intervention, since the bit pattern representing a handle for a particular object may vary from region to region.
URI Universal Resource Identifier. Identifies a specific resource in a universal fashion. See www.w3c.org for more details on URI's and associated concepts.
visible fields those members of the C structure representing the driver-visible part of a semi-opaque object.