NAME | SYNOPSIS | API RESTRICTIONS | FEATURES | DESCRIPTION | EXTENDED DESCRIPTION | ALLOWED CALLING CONTEXTS | ATTRIBUTES | SEE ALSO
#include <ddi/hsc/hsc.h>
The function or functions documented here may not be used safely in all application contexts with all APIs provided in the ChorusOS 5.0 product.
See API(5FEA) for details.
DDI
Provides a generic interface for handling the ENUM# signal on system compactPCI boards.
typedef BusIntrStatus (*HscIntrHandler) (void*); typedef struct HscDevOps { HscVersion version; KnError (*open) __((HscDevId dev_id, DevNode node, HscClientId * c_id)); void (*close) __((HscClientId c_id)); KnError (*intr_attach) __((HscClientId c_id, HscIntrHandler dev_intr_handler, void * dev_intr_cookie)); void (*intr_detach) __((HscClientId c_id)); void (*mask) __((HscClientId c_id)); void (*unmask) __((HscClientId c_id)); } HscDevOps;
A pointer to the HscDevOps structure is exported by the driver via the svDeviceRegister() microkernel call. A driver client invokes the svDeviceLookup() and svDeviceEntry() microkernel calls in order to obtain a pointer to the device service routine vector. Once the pointer is obtained, the driver client is able to invoke the driver service routine (via the indirect function call) in order to handle the ENUM# signal.
open() opens a connection to a given HSC driver. open() must be the first call to the device driver. The hsc device driver are mainly designed to be used by other driver. The DevNode argument is the node of the client driver (usually a pci bus driver or the pciswap driver). The hsc driver will check if the device correponding to the device node given as argument is allowed to handle hot swap events.
hsc device identifier.
The node of the device which will handle the ENUM# CompactPCI signal.
Contains opaque data given back from the hsc driver identifying the driver client.
On success K_OK is returned. And the c_id argument contains the driver client identification.
On failure, an error code is returned as follow:
Not enough memory resource.
The client driver is not allowed to handle ENUM# CompactPCI signal.
close() closes the connection with a given hsc device driver.
Identifies the connection with the device driver. This paremter was given back to the driver client by the open service routine.
intr_attach() attaches an interrupt handler to the ENUM# CompactPCI signal. The interrupt can be immediatly triggered after the handler has been attached. The interrupt state is unmasked.
hsc device identifier.
The driver client interrupt handler.
Data to give back to the interrupt handler when called.
On success K_OK is returned and interrupt can occur.
On failure, an error code is returned as follow:
Not enough resource memory.
intr_detach() detaches the interrupt handler to the ENUM# CompactPCI signal.
hsc device identifier.
unmask() unmasks the interrupt source. Note that the mask() and unmask() routine can not be nested.
hsc device identifier
The following table specifies the contexts in which a caller is allowed to invoke each service:
Services | Base level | DKI thread | Interrupt | Blocking |
---|---|---|---|---|
HscDevOps.open() | + | + | ||
HscDevOps.open() | + | + | ||
HscDevOps.close() | + | + | ||
HscDevOps.intr_attach() | + | + | ||
HscDevOps.intr_detach() | + | + | ||
HscDevOps.mask() | + | + | + | |
HscDevOps.unmask() | + | + | + |
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | API RESTRICTIONS | FEATURES | DESCRIPTION | EXTENDED DESCRIPTION | ALLOWED CALLING CONTEXTS | ATTRIBUTES | SEE ALSO