8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / lib / libpicl / picl2door.h
blob7399d0ed9e2ffc74c74d92d2fde610b6b34ff1d4
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
27 #ifndef _PICL2DOOR_H
28 #define _PICL2DOOR_H
30 #pragma ident "%Z%%M% %I% %E% SMI"
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
36 #define PICLD_DOOR_VERSION 1
37 #define PICLD_DOOR "/var/run/picld_door"
38 #define PICLD_DOOR_COOKIE ((void *)(0xdeaffeed ^ PICLD_DOOR_VERSION))
41 * PICL service calls
43 typedef enum {
44 PICL_CNUM_INIT = 0x1, /* initialize */
45 PICL_CNUM_FINI, /* fini */
46 PICL_CNUM_GETROOT, /* get root node */
47 PICL_CNUM_GETATTRVAL, /* get attr val */
48 PICL_CNUM_GETATTRVALBYNAME, /* get attr val by name */
49 PICL_CNUM_GETATTRINFO, /* get attribute information */
50 PICL_CNUM_GETFIRSTATTR, /* get first attribute */
51 PICL_CNUM_GETNEXTATTR, /* get next attribute */
52 PICL_CNUM_GETATTRBYNAME, /* get attr by name */
53 PICL_CNUM_GETATTRBYROW, /* get attr by row */
54 PICL_CNUM_GETATTRBYCOL, /* get attr by column */
55 PICL_CNUM_SETATTRVAL, /* set attribute's value */
56 PICL_CNUM_SETATTRVALBYNAME, /* set attr val by name */
57 PICL_CNUM_PING, /* ping daemon */
58 PICL_CNUM_WAIT, /* wait n seconds for refresh */
59 PICL_CNUM_ERROR, /* error response */
60 PICL_CNUM_FINDNODE, /* find node */
61 PICL_CNUM_NODEBYPATH, /* get node by path */
62 PICL_CNUM_FRUTREEPARENT /* get frutree parent */
63 } picl_callnumber_t;
65 typedef union {
66 picl_nodehdl_t nodeh;
67 picl_prophdl_t proph;
68 char str[1];
69 } propval_t;
70 #define ret_buf u.str
71 #define ret_nodeh u.nodeh
72 #define ret_proph u.proph
75 * Generic picl service request argument
77 typedef struct {
78 picl_callnumber_t cnum; /* service call number */
79 char buf[4]; /* buffer containing input arguments */
80 } picl_req_t;
82 typedef struct {
83 picl_callnumber_t cnum; /* service call number */
84 char buf[4]; /* buffer containing the results */
85 } picl_ret_t;
88 * PICL initialize
90 typedef struct {
91 picl_callnumber_t cnum; /* PICL_CNUM_INIT */
92 unsigned int clrev; /* client's ID and revision number */
93 } picl_reqinit_t;
95 typedef struct {
96 picl_callnumber_t cnum; /* PICL_CNUM_INIT */
97 int rev; /* PICL daemon's revision number */
98 } picl_retinit_t;
102 * PICL shutdown
104 typedef struct {
105 picl_callnumber_t cnum; /* PICL_CNUM_FINI */
106 } picl_reqfini_t;
108 typedef struct {
109 picl_callnumber_t cnum; /* PICL_CNUM_FINI */
110 } picl_retfini_t;
113 * PICL get root
115 typedef struct {
116 picl_callnumber_t cnum; /* PICL_CNUM_GETROOT */
117 } picl_reqroot_t;
119 typedef struct {
120 picl_callnumber_t cnum; /* PICL_CNUM_GETROOT */
121 picl_nodehdl_t rnode; /* root handle */
122 } picl_retroot_t;
125 * PICL get attr val
127 typedef struct {
128 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRVAL */
129 picl_prophdl_t attr; /* attribute handle */
130 uint32_t bufsize; /* value buffer size */
131 } picl_reqattrval_t;
133 typedef struct {
134 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRVAL */
135 picl_prophdl_t attr; /* attribute handle */
136 uint32_t nbytes; /* return value size */
137 propval_t u;
138 } picl_retattrval_t;
141 * PICL get attr val by name
143 typedef struct {
144 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRVALBYNAME */
145 picl_nodehdl_t nodeh; /* node handle */
146 /* attribute name */
147 char propname[PICL_PROPNAMELEN_MAX];
148 uint32_t bufsize; /* buffer size */
149 } picl_reqattrvalbyname_t;
151 typedef struct {
152 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRVALBYNAME */
153 picl_nodehdl_t nodeh; /* node handle */
154 /* attribute name */
155 char propname[PICL_PROPNAMELEN_MAX];
156 uint32_t nbytes; /* return value size */
157 propval_t u; /* return value */
158 } picl_retattrvalbyname_t;
161 * PICL get attr info
163 typedef struct {
164 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRINFO */
165 picl_prophdl_t attr; /* attribute handle */
166 } picl_reqattrinfo_t;
168 typedef struct {
169 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRINFO */
170 picl_prophdl_t attr; /* attribute handle */
171 picl_prop_type_t type; /* attribute type */
172 unsigned int accessmode; /* access mode */
173 uint32_t size; /* value size */
174 /* attr name */
175 char name[PICL_PROPNAMELEN_MAX];
176 } picl_retattrinfo_t;
179 * PICL get first attr
181 typedef struct {
182 picl_callnumber_t cnum; /* PICL_CNUM_GETFIRSTATTR */
183 picl_nodehdl_t nodeh; /* node handle */
184 } picl_reqfirstattr_t;
186 typedef struct {
187 picl_callnumber_t cnum; /* PICL_CNUM_GETFIRSTATTR */
188 picl_nodehdl_t nodeh; /* node handle */
189 picl_prophdl_t attr; /* first attribute handle */
190 } picl_retfirstattr_t;
193 * PICL get next attr
195 typedef struct {
196 picl_callnumber_t cnum; /* PICL_CNUM_GETNEXTATTR */
197 picl_prophdl_t attr; /* attribute handle */
198 } picl_reqnextattr_t;
200 typedef struct {
201 picl_callnumber_t cnum; /* PICL_CNUM_GETNEXTATTR */
202 picl_prophdl_t attr; /* attribute handle */
203 picl_prophdl_t nextattr; /* next attribute handle */
204 } picl_retnextattr_t;
207 * PICL get attr by name
209 typedef struct {
210 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRBYNAME */
211 picl_nodehdl_t nodeh; /* node handle */
212 /* attr name */
213 char propname[PICL_PROPNAMELEN_MAX];
214 } picl_reqattrbyname_t;
216 typedef struct {
217 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRBYNAME */
218 picl_nodehdl_t nodeh; /* node handle */
219 /* attr name */
220 char propname[PICL_PROPNAMELEN_MAX];
221 picl_prophdl_t attr; /* attr handle */
222 } picl_retattrbyname_t;
225 * PICL get attr by row
227 typedef struct {
228 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRBYROW */
229 picl_prophdl_t attr; /* attr handle */
230 } picl_reqattrbyrow_t;
232 typedef struct {
233 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRBYROW */
234 picl_prophdl_t attr; /* attr handle */
235 picl_prophdl_t rowattr; /* attr by row handle */
236 } picl_retattrbyrow_t;
239 * PICL get attr by column
241 typedef struct {
242 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRBYCOL */
243 picl_prophdl_t attr; /* attr handle */
244 } picl_reqattrbycol_t;
246 typedef struct {
247 picl_callnumber_t cnum; /* PICL_CNUM_GETATTRBYCOL */
248 picl_prophdl_t attr; /* attr handle */
249 picl_prophdl_t colattr; /* attr by col handle */
250 } picl_retattrbycol_t;
253 * PICL set attr val
255 typedef struct {
256 picl_callnumber_t cnum; /* PICL_CNUM_SETATTRVAL */
257 picl_prophdl_t attr; /* attribute handle */
258 uint32_t bufsize; /* value buffer size */
259 char valbuf[1];
260 } picl_reqsetattrval_t;
262 typedef struct {
263 picl_callnumber_t cnum; /* PICL_CNUM_SETATTRVAL */
264 picl_prophdl_t attr; /* attribute handle */
265 } picl_retsetattrval_t;
268 * PICL set attr val by name
270 typedef struct {
271 picl_callnumber_t cnum; /* PICL_CNUM_SETATTRVALBYNAME */
272 picl_nodehdl_t nodeh; /* node handle */
273 /* attr name */
274 char propname[PICL_PROPNAMELEN_MAX];
275 uint32_t bufsize; /* buffer size */
276 char valbuf[1];
277 } picl_reqsetattrvalbyname_t;
279 typedef struct {
280 picl_callnumber_t cnum; /* PICL_CNUM_SETATTRVALBYNAME */
281 picl_nodehdl_t nodeh; /* node handle */
282 /* attr name */
283 char propname[PICL_PROPNAMELEN_MAX];
284 } picl_retsetattrvalbyname_t;
287 * PICL ping
289 typedef struct {
290 picl_callnumber_t cnum; /* PICL_CNUM_PING */
291 } picl_reqping_t;
293 typedef struct {
294 picl_callnumber_t cnum; /* PICL_CNUM_PING */
295 } picl_retping_t;
298 * PICL wait
300 typedef struct {
301 picl_callnumber_t cnum; /* PICL_CNUM_WAIT */
302 unsigned int secs; /* number of seconds */
303 } picl_reqwait_t;
305 typedef struct {
306 picl_callnumber_t cnum; /* PICL_CNUM_WAIT service */
307 unsigned int secs; /* input seconds */
308 int retcode; /* return code */
309 } picl_retwait_t;
312 * PICL find node
314 typedef struct {
315 picl_callnumber_t cnum; /* PICL_CNUM_FINDNODE */
316 picl_nodehdl_t nodeh; /* top node handle */
317 /* property name */
318 char propname[PICL_PROPNAMELEN_MAX];
319 picl_prop_type_t ptype; /* property type */
320 uint32_t valsize; /* size of prop value */
321 char valbuf[1]; /* prop value */
322 } picl_reqfindnode_t;
324 typedef struct {
325 picl_callnumber_t cnum; /* PICL_CNUM_FINDNODE */
326 picl_nodehdl_t rnodeh; /* matched node */
327 } picl_retfindnode_t;
330 * PICL get node by path
332 typedef struct {
333 picl_callnumber_t cnum; /* PICL_CNUM_NODEBYPATH */
334 uint32_t psize; /* size of path */
335 char pathbuf[PATH_MAX]; /* picl path */
336 } picl_reqnodebypath_t;
338 typedef struct {
339 picl_callnumber_t cnum; /* PICL_CNUM_NODEBYPATH */
340 picl_nodehdl_t nodeh; /* node handle */
341 } picl_retnodebypath_t;
344 * PICL get frutree parent
346 typedef struct {
347 picl_callnumber_t cnum; /* PICL_CNUM_FRUTREEPARENT */
348 picl_nodehdl_t devh; /* dev node handle */
349 } picl_reqfruparent_t;
351 typedef struct {
352 picl_callnumber_t cnum; /* PICL_CNUM_FRUTREEPARENT */
353 picl_nodehdl_t fruh; /* fru parent handle */
354 } picl_retfruparent_t;
357 * PICL error return
359 typedef struct {
360 picl_callnumber_t cnum; /* PICL_CNUM_ERROR */
361 picl_callnumber_t in_cnum; /* requested service number */
362 picl_errno_t errnum; /* return error code */
363 } picl_reterror_t;
365 typedef union {
366 picl_req_t in; /* req arguments */
367 picl_ret_t out; /* out results */
369 picl_reqinit_t req_init; /* req initialize */
370 picl_retinit_t ret_init; /* ret initialize */
372 picl_reqfini_t req_fini; /* req fini */
373 picl_retfini_t ret_fini; /* ret fini */
375 picl_reqroot_t req_root; /* req root node */
376 picl_retroot_t ret_root; /* ret root node */
378 picl_reqattrval_t req_attrval; /* req attr value */
379 picl_retattrval_t ret_attrval; /* ret attr value */
381 /* req attr val by name */
382 picl_reqattrvalbyname_t req_attrvalbyname;
383 /* ret attr val by name */
384 picl_retattrvalbyname_t ret_attrvalbyname;
386 picl_reqattrinfo_t req_attrinfo; /* req attr info */
387 picl_retattrinfo_t ret_attrinfo; /* ret attr info */
389 picl_reqfirstattr_t req_firstattr; /* req first attr */
390 picl_retfirstattr_t ret_firstattr; /* ret first attr */
392 picl_reqnextattr_t req_nextattr; /* req next attr */
393 picl_retnextattr_t ret_nextattr; /* ret next attr */
395 picl_reqattrbyname_t req_attrbyname; /* req attr by name */
396 picl_retattrbyname_t ret_attrbyname; /* ret attr by name */
398 picl_reqattrbyrow_t req_attrbyrow; /* req attr by row */
399 picl_retattrbyrow_t ret_attrbyrow; /* ret attr by row */
401 picl_reqattrbycol_t req_attrbycol; /* req attr by col */
402 picl_retattrbycol_t ret_attrbycol; /* ret attr by col */
404 /* set attribute value */
405 picl_reqsetattrval_t req_setattrval;
406 /* ret set attribute value */
407 picl_retsetattrval_t ret_setattrval;
409 /* set attr val by name */
410 picl_reqsetattrvalbyname_t req_setattrvalbyname;
411 /* set attr val by name */
412 picl_retsetattrvalbyname_t ret_setattrvalbyname;
414 picl_reqping_t req_ping; /* req ping */
415 picl_retping_t ret_ping; /* ret ping */
417 picl_reqwait_t req_wait; /* req wait */
418 picl_retwait_t ret_wait; /* ret wait */
420 picl_reqfindnode_t req_findnode; /* req find node */
421 picl_retfindnode_t ret_findnode; /* ret find node */
423 picl_reqnodebypath_t req_nodebypath; /* get node by path */
424 picl_retnodebypath_t ret_nodebypath; /* ret node by path */
426 picl_reqfruparent_t req_fruparent; /* get frutree parent */
427 picl_retfruparent_t ret_fruparent; /* ret frutree parent */
429 picl_reterror_t ret_error; /* return error */
430 } picl_service_t;
432 #ifdef __cplusplus
434 #endif
436 #endif /* _PICL2DOOR_H */