xref: /titanic_44/usr/src/uts/common/avs/ns/contract.h (revision a38ddfee9c8c6b6c5a2947ff52fd2338362a4444)
1 /*
2  * CDDL HEADER START
3  *
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.
7  *
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.
12  *
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]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  */
25 
26 /*
27  * The sole purpose of this file is to document our violations of the DDI
28  * in Solaris and to get ddict to run on the data services stack.
29  * Definitions and declarations contained in this file are never compiled
30  * into the code.  It is only included if we are running ddict on our src.
31  *
32  * IMPORTANT NOTE:
33  * Many of the declarations are not correct. It does not matter.
34  * Structure declarations only define the fields we require.
35  * Structures which we use in an opaque manner are defined as void *
36  */
37 
38 #ifndef	_SYS_CONTRACT_H
39 #define	_SYS_CONTRACT_H
40 
41 #ifdef	__cplusplus
42 extern "C" {
43 #endif
44 
45 /*
46  * Define our interfaces for nsctl because ddict is stupid
47  * about intermodule dependencies
48  */
49 #include <sys/nsctl/nsctl_inter.h>
50 
51 /*
52  * Define our ncall interfaces
53  */
54 #include <sys/nsctl/ncall_inter.h>
55 
56 /*
57  * The STRUCT_DECL definitions in the ddict headers are fouled up
58  * we include our own model.h here to redefine it to avoid errors.
59  */
60 #if !defined(_SunOS_5_6)
61 #include <sys/nsctl/model.h>
62 #endif
63 
64 /*
65  * General violations
66  * Everybody violates these
67  * Why are they called ddi if it is not part of it?
68  */
69 
70 #define	DDI_PROP_NOTPROM 0
71 
72 int ddi_rele_driver(void) { }
73 int ddi_hold_installed_driver(void) { }
74 
75 /*
76  * SV module violations
77  */
78 void *curthread;
79 int devcnt;
80 
81 /*
82  * The following from vnode.h
83  */
84 typedef struct  vode {
85 	int v_lock;	/* SDBC uses this too */
86 	int v_type;	/* nskern too */
87 	int v_rdev;	/* nskern too */
88 } vnode_t;
89 
90 #define	FOLLOW 0
91 #define	NULLVPP NULL
92 #define	AT_RDEV 0
93 #define	VOP_GETATTR(vp, vap, f, cr) ((void)0)
94 #define	VN_RELE(vp) ((void)0)
95 
96 /*
97  *  The fields we use from vattr_t
98  */
99 typedef struct vattr {
100 	uint_t	va_mask;
101 	dev_t	va_rdev;
102 	int	va_size;	/* nskern */
103 } vattr_t;
104 
105 int lookupname(void, void, void, void, void) { }
106 
107 /*
108  * End of SV module violations
109  */
110 
111 /*
112  * DSW/II module violations
113  */
114 
115 /*
116  * This is really bogus that ddict does not understand sys/inttypes.h
117  */
118 #define	INT32_MIN	0
119 #define	INT32_MAX	0
120 #define	INT64_MAX	0
121 
122 /*
123  * End of DSW/II module violations
124  */
125 
126 /*
127  * UNISTAT module violations
128  */
129 
130 void mod_miscops;
131 typedef enum { B_FALSE, B_TRUE } boolean_t;
132 
133 /*
134  * End of UNISTAT module violations
135  */
136 
137 /*
138  * NSCTL module violations
139  */
140 #define	ERESTART 0
141 #define	EUSERS 0
142 #define	ENAMETOOLONG 0
143 #define	ENOSYS	0
144 #define	FOPEN	0
145 int ddi_name_to_major() { }
146 /*
147  * End of NSCTL module violations
148  */
149 
150 /*
151  * NSKERN module violations
152  */
153 #define	UL_GETFSIZE	0
154 #define	USHRT_MAX	0
155 
156 typedef	u_longlong_t	rlim64_t;
157 int ulimit() { }
158 int maxphys;
159 
160 #define	AT_SIZE	0
161 #define	VBLK	0
162 #define	VCHR	0
163 #define	VREG	0
164 #define	VLNK	0
165 
166 #define	VOP_CLOSE(vp, f, c, o, cr)	((void)0)
167 #define	VOP_RWLOCK(vp, w)	((void)0)
168 #define	VOP_RWUNLOCK(vp, w)	((void)0)
169 #define	VOP_READ(vp, uiop, iof, cr)	((void)0)
170 #define	VOP_WRITE(vp, uiop, iof, cr)	((void)0)
171 
172 int vn_open(char *pnamep, void seg, int filemode, int createmode,
173 		struct vnode **vpp, void crwhy, mode_t umask) { }
174 
175 /*
176  * End of NSKERN module violations
177  */
178 
179 /*
180  * NVRAM module violations
181  */
182 #define	MMU_PAGESIZE	0
183 
184 #ifndef MAXNAMELEN
185 #define	MAXNAMELEN	1
186 #endif
187 
188 #define	DEVMAP_DEFAULTS 0
189 #define	PFN_INVALID	-1
190 
191 char hw_serial[1];
192 int mmu_ptob(void arg) { }
193 int roundup(void arg) { }
194 
195 /*
196  * End of NVRAM module violations
197  */
198 
199 /*
200  * RDCSVR (SNDR) module
201  * Contract PSARC 2001/699
202  */
203 #define	DUP_DONE	0
204 #define	DUP_ERROR	0
205 #define	DUP_INPROGRESS	0
206 #define	DUP_NEW		0
207 #define	DUP_DROP	0
208 
209 #define	RPC_MAXDATASIZE	0
210 
211 
212 typedef void * file_t;		/* opaque */
213 typedef	void SVCXPRT;		/* opaque */
214 typedef	void SVCMASTERXPRT;	/* opaque */
215 typedef void xdrproc_t;		/* opaque */
216 typedef int enum_t;
217 
218 typedef struct svc_req {	/* required fields */
219 	int rq_vers;
220 	int rq_proc;
221 } svc_req_t;
222 
223 void SVC_FREEARGS(void xprt, void a, void *b) { }
224 void SVC_DUP(void xprt, void req, void i, void j, void *dr) { }
225 void svcerr_systemerr(void xprt) { }
226 void svcerr_noproc(void xprt) { }
227 void SVC_DUPDONE(void xprt, void dr, void a, void b, void c) { }
228 
229 SVCXPRT *svc_tli_kcreate(void *f, void *n, void *b, void **x, void *t,
230 	uint_t c, uint_t d) { }
231 
232 /*
233  * non-ddi not under contracts
234  */
235 struct netbuf {
236 	int	maxlen;
237 	int	len;
238 	char	*buf;
239 }
240 
241 /*
242  * End of RDCSRV module Contracts
243  */
244 
245 /*
246  * RDC (SNDR) module
247  * Contract PSARC 2001/699
248  */
249 
250 typedef	u_longlong_t	rpcproc_t;
251 typedef	u_longlong_t	xdrproc_t;
252 typedef	u_longlong_t	rpcvers_t;
253 #define	__dontcare__    -1
254 #define	RPC_INTR 0
255 #define	RPC_SUCCESS	0
256 #define	RPC_TLIERROR	0
257 #define	RPC_XPRTFAILED	0
258 #define	RPC_VERSMISMATCH	0
259 #define	RPC_PROGVERSMISMATCH 0
260 #define	RPC_INPROGRESS	0
261 
262 #define	ENOEXEC	0
263 #define	EBADF	0
264 
265 /*
266  * XDR routines
267  * from rpc/xdr.h
268  */
269 typedef	void * XDR;	/* opaque */
270 int xdr_void() { }
271 int xdr_int() { }
272 int xdr_union() { }
273 int xdr_enum() { }
274 int xdr_u_int() { }
275 int xdr_u_longlong_t() { }
276 int xdr_opaque() { }
277 int xdr_bytes() { }
278 int xdr_array() { }
279 #define	NULL_xdrproc_t ((xdrproc_t)0)
280 
281 /*
282  * The following imported rpc/clnt.h
283  */
284 
285 /* Client is mostly opaque exccept for the following */
286 
287 typedef struct __client {	/* required fields */
288 	void *cl_auth;
289 	bool_t cl_nosignal;
290 } CLIENT;
291 
292 #define	CLSET_PROGRESS	0
293 #define	KNC_STRSIZE	128
294 struct knetconfig {
295 	unsigned int	knc_semantics;
296 	caddr_t		knc_protofmly;
297 	caddr_t		knc_proto;
298 	dev_t		knc_rdev;
299 };
300 
301 void *clnt_sperrno() { }
302 void IS_UNRECOVERABLE_RPC(a) { }
303 void CLNT_CONTROL(cl, request, info) { }
304 void AUTH_DESTROY(void *a) { }
305 void CLNT_DESTROY(void *a) { }
306 
307 int clnt_tli_kcreate(void *a, void *b, void c, void d, void e, void f,
308 	void *g, void **h) { }
309 
310 int clnt_tli_kinit(void *h, void *config, void *addr, uint_t a, int b,
311 	void *c) { }
312 
313 void	 CLNT_CALL(void, void, void, void, void, void, void) { }
314 
315 /*
316  * The following imported from rpc/svc.h
317  */
318 void svc_sendreply() { }
319 void svcerr_decode() { }
320 void SVC_GETARGS() { }
321 
322 /*
323  * The following imported from sys/file.h
324  */
325 
326 void getf(void) { }
327 void releasef(void) { }
328 
329 /*
330  * Not under contract
331  */
332 void sigintr(void) { }
333 void sigunintr(void) { }
334 dev_t expldev() { }
335 
336 /*
337  * End of RDC module
338  */
339 
340 /*
341  * SDBC module violations
342  */
343 
344 /*
345  *  devid uses internal structure
346  *  from sys/ddi_impldefs.h
347  */
348 typedef struct impl_devid {
349 	uchar_t did_type_hi;
350 	uchar_t did_type_lo;
351 } impl_devid_t;
352 
353 #define	DEVID_GETTYPE(devid)  0
354 #define	DEVID_SCSI_SERIAL 0
355 
356 #define	ENOLINK	0	/* NCALL too */
357 #define	E2BIG	0
358 #define	ENOENT 0
359 #define	EIDRM 0
360 
361 #define	B_KERNBUF 0
362 #define	KSTAT_TYPE_RAW 0
363 #define	MAXPATHLEN 0
364 
365 #define	VN_HOLD(bp) ((void)0)
366 
367 /* Page list IO stuff */
368 typedef struct page {
369 	int v_count;	/* sdbc */
370 } page_t;
371 page_t kvp;		/* We use the kernel segment */
372 int page_add(void) { }
373 int page_find(void) { }
374 int page_list_concat(void) { }
375 int pageio_setup(void) { }
376 int pageio_done(void) { }
377 
378 void kobj_getsymvalue(void) { }
379 int ddi_dev_pathname(void) { }
380 
381 /*
382  * HACK ALERT
383  * struct buf hack for ddict.
384  * SDBC currently violates in struct buf
385  * 	b_pages
386  *	b_proc
387  * which we will define as the pad fields for ddict since
388  * we can not overload the definition of struct buf with our own stuff.
389  */
390 
391 #define	b_pages	b_pad7	/* b_pages in struct buf */
392 #define	b_proc	b_pad8	/* b_proc in struct buf */
393 #define	b_forw	b_pad1	/* b_forw in struct buf */
394 #define	b_back	b_pad2	/* b_back in struct buf */
395 
396 /*
397  * End of SDBC moduel violations
398  */
399 
400 /*
401  * SCMTEST module violations
402  */
403 
404 #define	ESRCH	0	/* NCALL too */
405 
406 /*
407  * End of SCMTEST module violations
408  */
409 /*
410  * SFTM module violations
411  * Note: XXX This list is currently incomplete
412  */
413 
414 typedef void * cqe_t;			/* opaque */
415 typedef void * fcal_packet_t;		/* opaque */
416 typedef void * soc_response_t;		/* opaque */
417 typedef void * la_els_logi_t;		/* opaque */
418 typedef void * la_els_adisc_t;		/* opaque */
419 typedef void * fcp_rsp_t;		/* opaque */
420 typedef void * soc_request_t;		/* opaque */
421 typedef void * els_payload_t;		/* opaque */
422 typedef void * la_els_logo_t;		/* opaque */
423 typedef void * fc_frame_header_t;	/* opaque */
424 
425 typedef struct la_els_prli_s {
426 	uchar_t		ls_code;
427 	uchar_t		page_length;
428 	ushort_t	payload_length;
429 	uchar_t		service_params[1];
430 } la_els_prli_t;
431 
432 typedef	la_els_prli_t la_els_prli_reply_t;
433 typedef la_els_prli_t la_els_prlo_t;
434 typedef	la_els_prli_t la_els_prlo_reply_t;
435 
436 /*
437  * The following from /usr/include/sys/fc4/fcp.h
438  */
439 typedef struct fcp_cntl {
440 	uchar_t	cntl_reserved_1	: 5,
441 		cntl_qtype	: 3;
442 	uchar_t	cntl_kill_tsk	: 1,
443 		cntl_clr_aca	: 1,
444 		cntl_reset	: 1,
445 		cntl_reserved_2	: 2,
446 		cntl_clr_tsk	: 1,
447 		cntl_abort_tsk	: 1,
448 		cntl_reserved_3	: 1;
449 	uchar_t	cntl_reserved_4	: 6,
450 		cntl_read_data	: 1,
451 		cntl_write_data	: 1;
452 } fcp_cntl_t;
453 
454 typedef struct fcp_ent_addr {
455 	ushort_t ent_addr_0;
456 	ushort_t ent_addr_1;
457 	ushort_t ent_addr_2;
458 	ushort_t ent_addr_3;
459 } fcp_ent_addr_t;
460 
461 typedef struct fcp_cmd_s {
462 	fcp_ent_addr_t	fcp_ent_addr;
463 	fcp_cntl_t	fcp_cntl;
464 	uchar_t		fcp_cdb[1];
465 	int		fcp_data_len;
466 } fcp_cmd_t;
467 
468 typedef struct fcal_transport {
469 	uchar_t dummy1;
470 	uchar_t dummy2;
471 } fcal_transport_t;
472 
473 /*
474  * End of SFTM module violations
475  */
476 
477 /*
478  * STE module violations
479  */
480 
481 typedef void  la_wwn_t;		/* opaque */
482 /* WWN formats from sys/fcal/fcal_linkapp.h */
483 typedef union la_wwn {
484 	uchar_t		raw_wwn[8];
485 	struct {
486 		uint_t	naa_id : 4;
487 		uint_t	nport_id : 12;
488 		uint_t	wwn_hi : 16;
489 		uint_t	wwn_lo;
490 	} w;
491 } la_wwn_t;
492 
493 insque(void) { }
494 remque(void) { }
495 snprintf(void) { }
496 
497 /*
498  * STE uses inq_serial and inq_ackqreqq from struct scsi_inquiry
499  */
500 #define	inq_serial	inq_pid
501 #define	inq_ackqreqq	inq_pid
502 /*
503  * End of STE module violations
504  */
505 
506 /*
507  * NCALL module violations
508  */
509 #define	ENONET	0
510 
511 /* NCALLSRV */
512 typedef int bool_t;
513 
514 /* NCALLIP */
515 #ifndef TRUE
516 #define	TRUE	1
517 #endif
518 
519 #ifndef FALSE
520 #define	FALSE	0
521 #endif
522 
523 #define	ERANGE	0
524 #define	ENODATA	0
525 
526 #define	RPC_TIMEDOUT 0
527 
528 /*
529  * End of NCALL violations
530  */
531 #ifdef	__cplusplus
532 }
533 #endif
534 
535 #endif /* _SYS_CONTRACT_H */
536