---
name: "hotplug"
section: "4"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/hotplug/4"
---

# hotplug(4)

devices hot plugging

## NAME

**hotplug** – devices hot plugging

## SYNOPSIS

**pseudo-device hotplug 1**

**#include \<sys/types.h\>**

**#include \<sys/device.h\>**

**#include \<sys/hotplug.h\>**

## DESCRIPTION

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)](/read/2.md) 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		*/
};
```

The *he\_type* field describes the event type and can be either 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 */
};
```

The *he\_devname* is a device name including unit number, e.g. *sd1*.

Only one structure can be read per call. If there are no events in the queue, the [read(2)](/read/2.md) call will block until an event appears.

## DIAGNOSTICS

- hotplug: event lost, queue full

  New events will be dropped until all pending events have been read.

## SEE ALSO

[read(2)](/read/2.md), [hotplugd(8)](/hotplugd/8.md)

## HISTORY

The **hotplug** device first appeared in OpenBSD 3.6.

## AUTHORS

The **hotplug** driver was written by Alexander Yurchenko ⟨*grange@openbsd.org*⟩.
