Import hotplug(4) pseudo-device.
[dragonfly.git] / sys / sys / hotplug.h
1 /*      $OpenBSD: hotplug.h,v 1.5 2006/05/28 16:52:34 mk Exp $  */
2 /*
3  * Copyright (c) 2004 Alexander Yurchenko <grange@openbsd.org>
4  *
5  * Permission to use, copy, modify, and distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  */
17
18 #ifndef _SYS_HOTPLUG_H_
19 #define _SYS_HOTPLUG_H_
20
21 #include <sys/bus.h>
22
23 /*
24  * Minimal device structures.
25  * Note that all ``system'' device types are listed here.
26  */
27 enum obsd_devclass {
28         DV_DULL,                /* generic, no special info */
29         DV_CPU,                 /* CPU (carries resource utilization) */
30         DV_DISK,                /* disk drive (label, etc) */
31         DV_IFNET,               /* network interface */
32         DV_TAPE,                /* tape device */
33         DV_TTY                  /* serial line interface (???) */
34 };
35
36 /*
37  * Public interface for enqueuing and dequeueing device
38  * attachment and detachment notifications.
39  */
40
41 #define HOTPLUG_DEVAT           0x01    /* device attached      */
42 #define HOTPLUG_DEVDT           0x02    /* device detached      */
43
44 struct hotplug_event {
45         int             he_type;        /* event type           */
46         enum obsd_devclass      he_devclass;    /* device class         */
47         char            he_devname[16]; /* device name          */
48 };
49
50 #ifdef _KERNEL
51 struct hotplug_device {
52         cdev_t  dev;
53         char    *name;
54 };
55 void    hotplug_device_attach(device_t dev);
56 void    hotplug_device_detach(device_t dev);
57 #endif
58
59 #endif  /* _SYS_HOTPLUG_H_ */