1*2f9345c2Sschwarze.\" $OpenBSD: hotplug.4,v 1.6 2015/09/14 17:09:26 schwarze Exp $ 24e8f96f7Sgrange.\" 34e8f96f7Sgrange.\" Copyright (c) 2004 Alexander Yurchenko <grange@openbsd.org> 44e8f96f7Sgrange.\" 54e8f96f7Sgrange.\" Permission to use, copy, modify, and distribute this software for any 64e8f96f7Sgrange.\" purpose with or without fee is hereby granted, provided that the above 74e8f96f7Sgrange.\" copyright notice and this permission notice appear in all copies. 84e8f96f7Sgrange.\" 94e8f96f7Sgrange.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 104e8f96f7Sgrange.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 114e8f96f7Sgrange.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 124e8f96f7Sgrange.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 134e8f96f7Sgrange.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 144e8f96f7Sgrange.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 154e8f96f7Sgrange.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 164e8f96f7Sgrange.\" 17*2f9345c2Sschwarze.Dd $Mdocdate: September 14 2015 $ 184e8f96f7Sgrange.Dt HOTPLUG 4 194e8f96f7Sgrange.Os 204e8f96f7Sgrange.Sh NAME 214e8f96f7Sgrange.Nm hotplug 224e8f96f7Sgrange.Nd devices hot plugging 234e8f96f7Sgrange.Sh SYNOPSIS 244e8f96f7Sgrange.Cd "pseudo-device hotplug 1" 254e8f96f7Sgrange.Pp 26*2f9345c2Sschwarze.In sys/types.h 27*2f9345c2Sschwarze.In sys/device.h 28*2f9345c2Sschwarze.In sys/hotplug.h 294e8f96f7Sgrange.Sh DESCRIPTION 304e8f96f7SgrangeThe 314e8f96f7Sgrange.Nm 324e8f96f7Sgrangepseudo-device passes device attachment and detachment events to 334e8f96f7Sgrangeuserland. 344e8f96f7SgrangeWhen a device attaches or detaches, the corresponding event is queued. 354e8f96f7SgrangeThe events can then be obtained from the queue through the 364e8f96f7Sgrange.Xr read 2 374e8f96f7Sgrangecall on the 384e8f96f7Sgrange.Pa /dev/hotplug 394e8f96f7Sgrangedevice file. 404e8f96f7SgrangeOnce an event has been read, it's deleted from the queue. 414e8f96f7SgrangeThe event queue has a limited size and if it's full all new events will be 424e8f96f7Sgrangedropped. 434e8f96f7SgrangeEach event is described with the following structure declared in the 44369bef3aSschwarze.In sys/hotplug.h 454e8f96f7Sgrangeheader file: 464e8f96f7Sgrange.Bd -literal -offset indent 474e8f96f7Sgrangestruct hotplug_event { 484e8f96f7Sgrange int he_type; /* event type */ 494e8f96f7Sgrange enum devclass he_devclass; /* device class */ 504e8f96f7Sgrange char he_devname[16]; /* device name */ 514e8f96f7Sgrange}; 524e8f96f7Sgrange 534e8f96f7Sgrange.Ed 544e8f96f7SgrangeThe 554e8f96f7Sgrange.Va he_type 564e8f96f7Sgrangefield describes the event type and can be either 574e8f96f7Sgrange.Dv HOTPLUG_DEVAT 584e8f96f7Sgrangefor device attachment or 594e8f96f7Sgrange.Dv HOTPLUG_DEVDT 604e8f96f7Sgrangefor detachment. 614e8f96f7SgrangeThe 624e8f96f7Sgrange.Va he_devclass 634e8f96f7Sgrangefield describes the device class. 644e8f96f7SgrangeAll device classes can be found in the 65369bef3aSschwarze.In sys/device.h 664e8f96f7Sgrangeheader file: 674e8f96f7Sgrange.Bd -literal -offset indent 684e8f96f7Sgrangeenum devclass { 694e8f96f7Sgrange DV_DULL, /* generic, no special info */ 704e8f96f7Sgrange DV_CPU, /* CPU (carries resource utilization) */ 714e8f96f7Sgrange DV_DISK, /* disk drive (label, etc) */ 724e8f96f7Sgrange DV_IFNET, /* network interface */ 734e8f96f7Sgrange DV_TAPE, /* tape device */ 744e8f96f7Sgrange DV_TTY /* serial line interface */ 754e8f96f7Sgrange}; 764e8f96f7Sgrange 774e8f96f7Sgrange.Ed 784e8f96f7SgrangeThe 794e8f96f7Sgrange.Va he_devname 804e8f96f7Sgrangeis a device name including unit number, e.g.\& 814e8f96f7Sgrange.Pa sd1 . 824e8f96f7Sgrange.Pp 834e8f96f7SgrangeOnly one structure can be read per call. 844e8f96f7SgrangeIf there are no events in the queue, the 854e8f96f7Sgrange.Xr read 2 864e8f96f7Sgrangecall will block until an event appears. 874e8f96f7Sgrange.Sh DIAGNOSTICS 884e8f96f7Sgrange.Bl -diag 894e8f96f7Sgrange.It "hotplug: event lost, queue full" 90c79c137bSjmcNew events will be dropped until all pending events have been read. 914e8f96f7Sgrange.El 924e8f96f7Sgrange.Sh SEE ALSO 934e8f96f7Sgrange.Xr read 2 , 944e8f96f7Sgrange.Xr hotplugd 8 954e8f96f7Sgrange.Sh HISTORY 964e8f96f7SgrangeThe 974e8f96f7Sgrange.Nm 984e8f96f7Sgrangedevice first appeared in 994e8f96f7Sgrange.Ox 3.6 . 1004e8f96f7Sgrange.Sh AUTHORS 1014e8f96f7SgrangeThe 1024e8f96f7Sgrange.Nm 1034e8f96f7Sgrangedriver was written by 104e5cc2e7eSschwarze.An Alexander Yurchenko Aq Mt grange@openbsd.org . 105