[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]

Technical Reference: Kernel and Subsystems, Volume 1

eeh_broadcast Kernel Service

Purpose

This service is provided for device drivers to coordinate activities during an EEH event.

Syntax

void eeh_broadcast(handle, message)
eeh_handle_t    handle;
unsigned long long message;

Parameters

handle EEH handle obtained from eeh_init or eeh_init_multifunc
message User- or kernel-defined message

Description

Because single-function drivers do not have a need for coordination, this service is intended for multifunction drivers only. If a single-function driver calls it, it is a NOP. There are two kinds of messages that can be sent among the drivers: kernel-defined messages (such as EEH_DD_SUSPEND and EEH_DD_DEAD) and the user-defined messages. See sys/eeh.h for help on how to define user messages. Kernel messages have a higher priority than user messages. Therefore, if user messages and kernel messages are both pending, the kernel messages are sent out before the user messages.

Note:
Device drivers should only broadcast their own messages (that is, the user-defined message) and not the kernel messages.

Within the kernel messages, EEH_DD_DEAD has the highest priority. Multiple messages of the same kind may or may not be coalesced depending upon the relative timing. Messages are sent by invoking the callback routines. The callback routines are invoked sequentially but not in any specific order except that the last driver to receive a message will have the EEH_MASTER flag set to indicate that all other drivers have finished processing the message. Only one message is broadcast at a time--that is, all registered callback routines are called sequentially with the same message before moving on to the next message. Finally, they are invoked asynchronously at INTIODONE priority. Because they are broadcast asynchronously, a device driver must not assume on a specific timeout within which the message would arrive.

The macro EEH_BROADCAST(handle, message) is provided for device drivers to call this service.

Execution Environment

This kernel service can be called from the process or interrupt environment.

Return Values

This service has no return value.

Related Information

eeh_clear Kernel Service, eeh_disable_slot Kernel Service, eeh_enable_dma Kernel Service, eeh_enable_pio Kernel Service, eeh_enable_slot Kernel Service, eeh_init Kernel Service, eeh_init_multifunc Kernel Service, eeh_read_slot_state Kernel Service, eeh_reset_slot Kernel Service, eeh_slot_error Kernel Service

[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]