dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / lib / cfgadm_plugins / sbd / common / ap.h
blobbfa14be810deef980f0a951449f3a515589e5ce8
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 _CFGA_SBD_H
28 #define _CFGA_SBD_H
30 #pragma ident "%Z%%M% %I% %E% SMI"
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
36 #define DEVDIR "/devices"
38 #ifdef SBD_DEBUG
39 #define DBG dbg
40 void dbg(char *, ...);
41 #else
42 #define DBG
43 #endif
45 typedef struct {
46 int flags;
47 int code;
48 char *mid;
49 char *platform;
50 int skip;
51 int err;
52 } ap_opts_t;
55 * Command options.
57 * Some of the options are provided for testing purpose and
58 * will not published (e.g. err,code,mid).
60 #define OPT_UNASSIGN 0
61 #define OPT_SKIP 1
62 #define OPT_PARSABLE 2
63 #define OPT_NOPOWEROFF 3
64 #define OPT_CODE 4
65 #define OPT_MID 5
66 #define OPT_ERR 6
67 #define OPT_PLATFORM 7
68 #define OPT_SIM 8
69 #define OPT_SUSPEND_OK 9
70 #define OPT_LIST_ALL 29
71 #define OPT_FORCE 30
72 #define OPT_VERBOSE 31
74 #define ap_getopt(a, o) ((a)->opts.flags & ((uint_t)1 << (o)))
75 #define ap_setopt(a, o) ((a)->opts.flags |= ((uint_t)1 << (o)))
77 typedef enum {
78 AP_NONE = 0,
79 AP_BOARD,
80 AP_CPU,
81 AP_MEM,
82 AP_IO,
83 AP_CMP
84 } ap_target_t;
86 #define AP_NCLASS 6
89 * Attachment point descriptor.
91 * All commands are processed as follows:
93 * . allocate a command descriptor
94 * . parse the physical ap_id
95 * . parse the command and its options.
96 * . sequence if necessary (state change commands)
97 * . execute
100 typedef struct {
101 int fd;
102 int bnum;
103 int cnum;
104 int ncm;
105 int inst;
106 int norcm;
107 int statonly;
108 const char *class;
109 const char *apid;
110 char *drv;
111 char *path;
112 char *target;
113 char *minor;
114 char *cid;
115 char *cname;
116 char *options;
117 char **errstring;
118 ap_opts_t opts;
119 ap_target_t tgt;
120 struct cfga_msg *msgp;
121 struct cfga_confirm *confp;
122 void *ctl;
123 void *stat;
124 void *cmstat;
125 void *rcm;
126 } apd_t;
129 * Command definitions.
131 * The command order is significant. The sequenced (-c) commands
132 * are sorted in execution order. The configure command starts from
133 * assign and ends with online. The disconnect command starts
134 * from offline and goes to unassign. Steps in the sequencing may
135 * be optionally skipped.
137 #define CMD_ASSIGN 0
138 #define CMD_POWERON 1
139 #define CMD_TEST 2
140 #define CMD_CONNECT 3
141 #define CMD_CONFIGURE 4
142 #define CMD_RCM_ONLINE 5
143 #define CMD_RCM_CAP_ADD 6
144 #define CMD_SUSPEND_CHECK 7
145 #define CMD_RCM_SUSPEND 8
146 #define CMD_RCM_CAP_DEL 9
147 #define CMD_RCM_OFFLINE 10
148 #define CMD_UNCONFIGURE 11
149 #define CMD_RCM_REMOVE 12
150 #define CMD_RCM_CAP_NOTIFY 13
151 #define CMD_DISCONNECT 14
152 #define CMD_POWEROFF 15
153 #define CMD_UNASSIGN 16
154 #define CMD_RCM_RESUME 17
155 #define CMD_STATUS 18
156 #define CMD_GETNCM 19
157 #define CMD_PASSTHRU 20
158 #define CMD_HELP 21
159 #define CMD_ERRTEST 22
160 #define CMD_NONE 23
163 * Error messages.
165 #define ERR_CMD_INVAL 0
166 #define ERR_CMD_FAIL 1
167 #define ERR_CMD_NACK 2
168 #define ERR_CMD_NOTSUPP 3
169 #define ERR_CMD_ABORT 4
170 #define ERR_OPT_INVAL 5
171 #define ERR_OPT_NOVAL 6
172 #define ERR_OPT_VAL 7
173 #define ERR_OPT_BADVAL 8
174 #define ERR_AP_INVAL 9
175 #define ERR_CM_INVAL 10
176 #define ERR_TRANS_INVAL 11
177 #define ERR_SIG_CHANGE 12
178 #define ERR_RCM_HANDLE 13
179 #define ERR_RCM_CMD 14
180 #define ERR_RCM_INFO 15
181 #define ERR_LIB_OPEN 16
182 #define ERR_LIB_SYM 17
183 #define ERR_STAT 18
184 #define ERR_NOMEM 19
185 #define ERR_PLUGIN 20
186 #define ERR_NONE 21
188 #define MSG_ISSUE 0
189 #define MSG_SKIP 1
190 #define MSG_SUSPEND 2
191 #define MSG_ABORT 3
192 #define MSG_DONE 4
193 #define MSG_FAIL 5
194 #define MSG_NORCM 6
195 #define MSG_NONE 7
197 #define s_free(x) (free(x), (x) = NULL)
198 #define str_valid(p) ((p) != NULL && *(p) != '\0')
199 #define mask(x) ((uint_t)1 << (x))
201 #define CM_DFLT -1 /* default (current) component */
203 int ap_cnt(apd_t *);
204 int ap_parse(apd_t *, const char *);
205 int ap_confirm(apd_t *);
206 int ap_state_cmd(cfga_cmd_t, int *);
207 int ap_symid(apd_t *, char *, char *, size_t);
208 char *ap_sys_err(apd_t *, char **);
209 char *ap_cmd_name(int);
210 char *ap_opt_name(int);
211 char *ap_logid(apd_t *, char *);
212 void ap_err(apd_t *, ...);
213 void ap_msg(apd_t *, ...);
214 void ap_info(apd_t *, cfga_info_t, ap_target_t);
215 void ap_init(apd_t *, cfga_list_data_t *);
216 void ap_state(apd_t *, cfga_stat_t *, cfga_stat_t *);
217 cfga_err_t ap_stat(apd_t *a, int);
218 cfga_err_t ap_ioctl(apd_t *, int);
219 cfga_err_t ap_help(struct cfga_msg *, const char *, cfga_flags_t);
220 cfga_err_t ap_cmd_exec(apd_t *, int);
221 cfga_err_t ap_cmd_seq(apd_t *, int);
222 cfga_err_t ap_suspend_query(apd_t *, int, int *);
223 cfga_err_t ap_platopts_check(apd_t *, int, int);
224 cfga_err_t ap_cmd_parse(apd_t *, const char *, const char *, int *);
225 cfga_err_t ap_test_err(apd_t *, const char *);
227 int ap_cm_capacity(apd_t *, int, void *, int *, cfga_stat_t *);
228 int ap_cm_ncap(apd_t *, int);
229 void ap_cm_id(apd_t *, int, char *, size_t);
230 void ap_cm_init(apd_t *, cfga_list_data_t *, int);
231 char *ap_cm_devpath(apd_t *, int);
232 ap_target_t ap_cm_type(apd_t *, int);
234 cfga_err_t ap_rcm_init(apd_t *);
235 void ap_rcm_fini(apd_t *);
236 cfga_err_t ap_rcm_ctl(apd_t *, int);
237 int ap_rcm_info(apd_t *, char **);
239 apd_t *apd_alloc(const char *, cfga_flags_t, char **,
240 struct cfga_msg *, struct cfga_confirm *);
241 void apd_free(apd_t *a);
242 cfga_err_t apd_init(apd_t *, int);
244 int debugging();
246 #ifdef __cplusplus
248 #endif
250 #endif /* _CFGA_SBD_H */