1 | /* $NetBSD: drvctlio.h,v 1.7 2008/05/31 13:24:57 freza Exp $ */ |
2 | |
3 | /*- |
4 | * Copyright (c) 2006 The NetBSD Foundation, Inc. |
5 | * All rights reserved. |
6 | * |
7 | * This code is derived from software contributed to The NetBSD Foundation |
8 | * by Jason R. Thorpe. |
9 | * |
10 | * Redistribution and use in source and binary forms, with or without |
11 | * modification, are permitted provided that the following conditions |
12 | * are met: |
13 | * 1. Redistributions of source code must retain the above copyright |
14 | * notice, this list of conditions and the following disclaimer. |
15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in the |
17 | * documentation and/or other materials provided with the distribution. |
18 | * |
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS |
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS |
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
29 | * POSSIBILITY OF SUCH DAMAGE. |
30 | */ |
31 | |
32 | /* This interface is experimental and may change. */ |
33 | |
34 | #ifndef _SYS_DRVCTLIO_H_ |
35 | #define _SYS_DRVCTLIO_H_ |
36 | |
37 | #include <prop/proplib.h> |
38 | #include <sys/ioccom.h> |
39 | |
40 | #define DRVCTLDEV "/dev/drvctl" |
41 | |
42 | struct devdetachargs { |
43 | char devname[16]; |
44 | }; |
45 | |
46 | struct devlistargs { |
47 | char l_devname[16]; |
48 | char (*l_childname)[16]; |
49 | size_t l_children; |
50 | }; |
51 | |
52 | enum devpmflags { |
53 | DEVPM_F_SUBTREE = 0x1 |
54 | }; |
55 | |
56 | struct devpmargs { |
57 | char devname[16]; |
58 | uint32_t flags; |
59 | }; |
60 | |
61 | struct devrescanargs { |
62 | char busname[16]; |
63 | char ifattr[16]; |
64 | unsigned int numlocators; |
65 | int *locators; |
66 | }; |
67 | |
68 | #define DRVDETACHDEV _IOW('D', 123, struct devdetachargs) |
69 | #define DRVRESCANBUS _IOW('D', 124, struct devrescanargs) |
70 | #define DRVCTLCOMMAND _IOWR('D', 125, struct plistref) |
71 | #define DRVRESUMEDEV _IOW('D', 126, struct devpmargs) |
72 | #define DRVLISTDEV _IOWR('D', 127, struct devlistargs) |
73 | #define DRVGETEVENT _IOR('D', 128, struct plistref) |
74 | #define DRVSUSPENDDEV _IOW('D', 129, struct devpmargs) |
75 | |
76 | /* |
77 | * DRVCTLCOMMAND documentation |
78 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
79 | * |
80 | * Generic ioctl that takes a dictionary as an argument (specifies the |
81 | * command and arguments) and returns a dictionary with the results. |
82 | * |
83 | * Command arguments are structured like so: |
84 | * |
85 | * <dict> |
86 | * <key>drvctl-command</key> |
87 | * <string>...</string> |
88 | * <!-- optional arguments --> |
89 | * <key>drvctl-arguments</key> |
90 | * <dict> |
91 | * <!-- arguments vary with command --> |
92 | * </dict> |
93 | * </dict> |
94 | * |
95 | * Results are returned like so: |
96 | * |
97 | * <dict> |
98 | * <key>drvctl-error</key> |
99 | * <!-- 0 == success, otherwise an errno value --> |
100 | * <integer>...</integer> |
101 | * <!-- optional additional error message --> |
102 | * <key>drvctl-error-message</key> |
103 | * <string>...</string> |
104 | * <!-- optional results dictionary --> |
105 | * <key>drvctl-result-data</key> |
106 | * <dict> |
107 | * <!-- results vary with command --> |
108 | * </dict> |
109 | * </dict> |
110 | * |
111 | * |
112 | * Commands recognized by DRVCTLCOMMAND |
113 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
114 | * |
115 | * get-properties |
116 | * |
117 | * Arguments: |
118 | * |
119 | * <dict> |
120 | * <key>device-name</key> |
121 | * <string>...</string> |
122 | * </dict> |
123 | * |
124 | * Results: |
125 | * <dict> |
126 | * <!-- contents of device's properties dictionary --> |
127 | * </dict> |
128 | */ |
129 | |
130 | #endif /* _SYS_DRVCTLIO_H_ */ |
131 | |