| HOTPLUG(4) | Device Drivers Manual | HOTPLUG(4) |
hotplug — devices
hot plugging
pseudo-device hotplug 1
#include <sys/types.h>
#include <sys/device.h>
#include <sys/hotplug.h>
The hotplug pseudo-device passes device
attachment and detachment events to userland. When a device attaches or
detaches, the corresponding event is queued. The events can then be obtained
from the queue through the read(2)
call on the /dev/hotplug device file. Once an event
has been read, it's deleted from the queue. The event queue has a limited
size and if it's full all new events will be dropped. Each event is
described with the following structure declared in the
<sys/hotplug.h> header
file:
struct hotplug_event {
int he_type; /* event type */
enum devclass he_devclass; /* device class */
char he_devname[16]; /* device name */
};
HOTPLUG_DEVAT for device attachment or
HOTPLUG_DEVDT for detachment. The
he_devclass field describes the device class. All device
classes can be found in the
<sys/device.h> header file:
enum devclass {
DV_DULL, /* generic, no special info */
DV_CPU, /* CPU (carries resource utilization) */
DV_DISK, /* disk drive (label, etc) */
DV_IFNET, /* network interface */
DV_TAPE, /* tape device */
DV_TTY /* serial line interface */
};
Only one structure can be read per call. If there are no events in the queue, the read(2) call will block until an event appears.
The hotplug device first appeared in
OpenBSD 3.6.
The hotplug driver was written by
Alexander Yurchenko
<grange@openbsd.org>.
| September 14, 2015 | openbsd |