dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / lib / cfgadm_plugins / usb / common / cfga_usb.h
blobaba9ee25f3eb4e17f3b4ed09e90433c29ad79806
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
19 * CDDL HEADER END
22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
26 #ifndef _CFGA_USB_H
27 #define _CFGA_USB_H
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
34 #include <stdlib.h>
35 #include <strings.h>
36 #include <fcntl.h>
37 #include <ctype.h>
38 #include <unistd.h>
39 #include <libintl.h>
40 #include <libdevice.h>
41 #include <sys/varargs.h>
42 #include <sys/usb/usba.h>
43 #include <sys/usb/hubd/hub.h>
44 #include <sys/usb/hubd/hubd_impl.h>
45 #include <libdevinfo.h>
46 #include <libdevice.h>
47 #include <librcm.h>
48 #include <synch.h>
49 #include <thread.h>
50 #include <assert.h>
52 #define CFGA_PLUGIN_LIB
53 #include <config_admin.h>
57 * Debug stuff.
59 #ifdef DEBUG
60 #define DPRINTF (void) printf
61 #else
62 #define DPRINTF 0 &&
63 #endif /* DEBUG */
66 /* for walking links */
67 typedef struct walk_link {
68 char *path;
69 char len;
70 char **linkpp;
71 } walk_link_t;
75 * Stuff carried over for the routines borrowed from cfgadm/SCSI.
77 typedef enum {
78 UCFGA_TERMINATE = 0,
79 UCFGA_CONTINUE
80 } ucfga_recur_t;
82 /* Structures for tree walking code */
83 typedef struct {
84 char *phys;
85 char *log;
86 int ret;
87 int match_minor;
88 int l_errno;
89 } pathm_t;
92 #define MATCH_MINOR_NAME 1
93 #define S_FREE(x) (free(x), (x) = NULL)
94 #define GET_DYN(a) (((a) != NULL) ? strstr((a), DYN_SEP) : NULL)
97 /* Location of USB configuration file */
98 #define USBCONF_FILE "/etc/usb/config_map.conf"
100 /* Hardware options */
101 #define OPT_DISABLE_RCM "disable_rcm"
102 #define FLAG_DISABLE_RCM 0x00000001 /* flags */
104 /* Return/error codes */
105 typedef enum {
106 UCFGA_ERR = -2,
107 UCFGA_LIB_ERR,
108 UCFGA_OK,
109 UCFGA_BUSY,
110 UCFGA_NO_REC
111 } ucfga_ret_t;
115 /* Messages */
117 typedef struct {
118 int intl; /* Flag: if 1, internationalize */
119 cfga_err_t cfga_err; /* Error code libcfgadm understands */
120 const char *msgstr;
121 } msgcvt_t;
122 #define NO_CVT 0
123 #define CVT 1
125 #define MSG_TBL_SZ(table) (sizeof ((table)) / sizeof (msgcvt_t))
128 /* Error message ids (and indices into usb_error_msgs) */
129 typedef enum {
131 CFGA_USB_OK = 0,
132 CFGA_USB_UNKNOWN,
133 CFGA_USB_INTERNAL_ERROR,
134 CFGA_USB_OPTIONS,
135 CFGA_USB_DYNAMIC_AP,
136 CFGA_USB_AP,
137 CFGA_USB_PORT,
138 CFGA_USB_DEVCTL,
139 CFGA_USB_NOT_CONNECTED,
140 CFGA_USB_NOT_CONFIGURED,
141 CFGA_USB_ALREADY_CONNECTED,
142 CFGA_USB_ALREADY_CONFIGURED,
143 CFGA_USB_OPEN,
144 CFGA_USB_IOCTL,
145 CFGA_USB_BUSY,
146 CFGA_USB_ALLOC_FAIL,
147 CFGA_USB_OPNOTSUPP,
148 CFGA_USB_DEVLINK,
149 CFGA_USB_STATE,
150 CFGA_USB_CONFIG_INVAL,
151 CFGA_USB_PRIV,
152 CFGA_USB_NVLIST,
153 CFGA_USB_ZEROLEN,
154 CFGA_USB_CONFIG_FILE,
155 CFGA_USB_LOCK_FILE,
156 CFGA_USB_UNLOCK_FILE,
157 CFGA_USB_ONE_CONFIG,
159 /* RCM Errors */
160 CFGA_USB_RCM_HANDLE,
161 CFGA_USB_RCM_ONLINE,
162 CFGA_USB_RCM_OFFLINE,
163 CFGA_USB_RCM_INFO
165 } cfga_usb_ret_t;
169 * Given an error msg index, look up the associated string, and
170 * convert it to the current locale if required.
172 #define ERR_STR(msg_idx) \
173 (get_msg((msg_idx), usb_error_msgs, MSG_TBL_SZ(usb_error_msgs)))
176 /* Misc text strings */
177 #define CFGA_DEV_DIR "/dev/cfg"
178 #define DYN_SEP "::"
179 #define MINOR_SEP ":"
180 #define PORT "port"
181 #define PORT_SEPERATOR "."
182 #define USB "usb"
183 #define USB_CFGADM_DEFAULT_AP_TYPE "unknown"
185 /* these set of defines are -lav listing */
186 #define USB_UNDEF_STR "<undef>"
187 #define USB_NO_CFG_STR "<no cfg str descr>"
189 /* -x commands */
190 #define RESET_DEVICE "usb_reset" /* with -x option */
191 #define USB_CONFIG "usb_config" /* with -x option */
192 #define SET_CONFIG "config=" /* with -o option */
193 #define SET_DRIVER "drv=" /* with -op option */
195 /* for confirm operation */
196 #define USB_CONFIRM_0 "the device: "
197 #define USB_CONFIRM_1 \
198 "This operation will suspend activity on the USB device\nContinue"
200 /* Prototypes */
201 extern int add_entry(char *, int, int, int, char *, char *, char *,
202 char **);
203 extern cfga_usb_ret_t do_control_ioctl(const char *, uint_t, uint_t,
204 void **, size_t *);
207 #ifdef __cplusplus
209 #endif
211 #endif /* _CFGA_USB_H */