Home | History | Annotate | Download | only in ml
      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 2009 Sun Microsystems, Inc.  All rights reserved.
     23  * Use is subject to license terms.
     24  */
     25 
     26 #if !defined(lint)
     27 #include "assym.h"
     28 #endif /* !lint */
     29 
     30 #include <sys/asm_linkage.h>
     31 
     32 #if defined(lint)
     33 
     34 char stubs_base[1], stubs_end[1];
     35 
     36 #else	/* lint */
     37 
     38 /*
     39  * WARNING: there is no check for forgetting to write END_MODULE,
     40  * and if you do, the kernel will most likely crash.  Be careful
     41  *
     42  * This file assumes that all of the contributions to the data segment
     43  * will be contiguous in the output file, even though they are separated
     44  * by pieces of text.  This is safe for all assemblers I know of now...
     45  */
     46 
     47 /*
     48  * This file uses ansi preprocessor features:
     49  *
     50  * 1. 	#define mac(a) extra_ ## a     -->   mac(x) expands to extra_a
     51  * The old version of this is
     52  *      #define mac(a) extra_/.*.*./a
     53  * but this fails if the argument has spaces "mac ( x )"
     54  * (Ignore the dots above, I had to put them in to keep this a comment.)
     55  *
     56  * 2.   #define mac(a) #a             -->    mac(x) expands to "x"
     57  * The old version is
     58  *      #define mac(a) "a"
     59  *
     60  * For some reason, the 5.0 preprocessor isn't happy with the above usage.
     61  * For now, we're not using these ansi features.
     62  *
     63  * The reason is that "the 5.0 ANSI preprocessor" is built into the compiler
     64  * and is a tokenizing preprocessor. This means, when confronted by something
     65  * other than C token generation rules, strange things occur. In this case,
     66  * when confronted by an assembly file, it would turn the token ".globl" into
     67  * two tokens "." and "globl". For this reason, the traditional, non-ANSI
     68  * preprocessor is used on assembly files.
     69  *
     70  * It would be desirable to have a non-tokenizing cpp (accp?) to use for this.
     71  */
     72 
     73 /*
     74  * This file contains the stubs routines for modules which can be autoloaded.
     75  */
     76 
     77 
     78 /*
     79  * See the 'struct mod_modinfo' definition to see what this structure
     80  * is trying to achieve here.
     81  */
     82 /*
     83  * XX64 - This still needs some repair.
     84  * (a) define 'pointer alignment' and use it
     85  * (b) define '.pword' or equivalent, and use it (to mean .word or .xword).
     86  */
     87 #define	MODULE(module,namespace)	\
     88 	.seg	".data";		\
     89 module/**/_modname:			\
     90 	.ascii	"namespace/module";	\
     91 	.byte	0;			\
     92 	.align	CPTRSIZE;		\
     93 	.global	module/**/_modinfo;	\
     94 	.type	module/**/_modinfo, #object;	\
     95 	.size	module/**/_modinfo, 16;	\
     96 module/**/_modinfo:			\
     97 	.word 0;			\
     98 	.word module/**/_modname;	\
     99 	.word 0;			\
    100 	.word 0;
    101 
    102 #define	END_MODULE(module)		\
    103 	.align 8; .word 0; .word 0	/* FIXME: .xword 0 */
    104 
    105 
    106 #define STUB(module, fcnname, retfcn)	\
    107     STUB_COMMON(module, fcnname, mod_hold_stub, retfcn, 0)
    108 
    109 /*
    110  * "weak stub", don't load on account of this call
    111  */
    112 #define WSTUB(module, fcnname, retfcn)	\
    113     STUB_COMMON(module, fcnname, retfcn, retfcn, MODS_WEAK)
    114 
    115 /*
    116  * "non-unloadable stub", don't bother 'holding' module if it's already loaded
    117  * since the module cannot be unloaded.
    118  *
    119  * User *MUST* guarantee the module is not unloadable (no _fini routine).
    120  */
    121 #define NO_UNLOAD_STUB(module, fcnname, retfcn)	\
    122     STUB_UNLOADABLE(module, fcnname, retfcn, retfcn, MODS_NOUNLOAD)
    123 
    124 /*
    125  * Macro for modstubbed system calls whose modules are not unloadable.
    126  *
    127  * System call modstubs needs special handling for the case where
    128  * the modstub is a system call, because %fp comes from user frame.
    129  */
    130 #define	SCALL_NU_STUB(module, fcnname, retfcn)	\
    131     SCALL_UNLOADABLE(module, fcnname, retfcn, retfcn, MODS_NOUNLOAD)
    132 /* "weak stub" for non-unloadable module, don't load on account of this call */
    133 #define NO_UNLOAD_WSTUB(module, fcnname, retfcn) \
    134     STUB_UNLOADABLE(module, fcnname, retfcn, retfcn, MODS_NOUNLOAD|MODS_WEAK)
    135 
    136 #define	STUB_DATA(module, fcnname, install_fcn, retfcn, weak)		\
    137 	.seg	".data";						\
    138 	.align	8;							\
    139 fcnname/**/_info:							\
    140 	.word	0;			/* 0 */				\
    141 	.word	install_fcn;		/* 4 */				\
    142 	.word	0;			/* 8 */				\
    143 	.word	module/**/_modinfo;	/* c */				\
    144 	.word	0;			/* 10 */			\
    145 	.word	fcnname;		/* 14 */			\
    146 	.word	0;			/* 18 */			\
    147 	.word	retfcn;			/* 1c */			\
    148 	.word   weak			/* 20 */
    149 
    150 /*
    151  * The flag MODS_INSTALLED is stored in the stub data and is used to
    152  * indicate if a module is installed and initialized.  This flag is used
    153  * instead of the mod_stub_info->mods_modinfo->mod_installed flag
    154  * to minimize the number of pointer de-references for each function
    155  * call (and also to avoid possible TLB misses which could be induced
    156  * by dereferencing these pointers.)
    157  */
    158 
    159 #define STUB_COMMON(module, fcnname, install_fcn, retfcn, weak)		\
    160 	ENTRY_NP(fcnname);						\
    161 	save	%sp, -SA(MINFRAME), %sp;/* new window */		\
    162 	set	fcnname/**/_info, %l5;					\
    163 	ld	[%l5 + MODS_FLAG], %l1;	/* weak?? */			\
    164 	cmp	%l1, 0;							\
    165 	be,a	1f;			/* not weak */			\
    166 	restore;							\
    167 	btst	MODS_INSTALLED, %l1;	/* installed?? */		\
    168  	bne,a,pt %xcc, 1f;		/* yes, do mod_hold thing */	\
    169  	restore;							\
    170  	ldn	[%l5 + MODS_RETFCN], %g1;				\
    171 	jmp	%g1;			/* no, just jump to retfcn */	\
    172 	restore;							\
    173 1:	sub	%sp, %fp, %g1;	/* get (-)size of callers stack */	\
    174 	save	%sp, %g1, %sp;	/* create new frame same size */	\
    175 	sub	%g0, %g1, %l4;  /* size of stack frame */		\
    176 	sethi	%hi(fcnname/**/_info), %l5;				\
    177 	b	stubs_common_code;					\
    178 	or	%l5, %lo(fcnname/**/_info), %l5;			\
    179 	SET_SIZE(fcnname);						\
    180 	STUB_DATA(module, fcnname, install_fcn, retfcn, weak)
    181 
    182 #define STUB_UNLOADABLE(module, fcnname, install_fcn, retfcn, weak)	\
    183 	ENTRY_NP(fcnname);						\
    184 	save	%sp, -SA(MINFRAME), %sp;	/* new window */	\
    185 	set	fcnname/**/_info, %l5;					\
    186 	ld	[%l5 + MODS_FLAG], %l1;					\
    187 	btst	MODS_INSTALLED, %l1;		/* installed?? */	\
    188 	bne,a	%xcc, 1f;			/* yes */		\
    189 	ldn	[%l5], %g1;						\
    190 	btst	MODS_WEAK, %l1;			/* weak?? */		\
    191 	be,a	2f;				/* no, load module */	\
    192 	restore;							\
    193 	ldn	[%l5 + MODS_RETFCN], %g1;				\
    194 1:	jmp	%g1;				/* off we go */		\
    195 	restore;							\
    196 2:	sub	%sp, %fp, %g1;	/* get (-)size of callers frame */	\
    197 	save	%sp, %g1, %sp;	/* create new frame same size */	\
    198 	sub	%g0, %g1, %l4;  /* size of stack frame */		\
    199 	sethi	%hi(fcnname/**/_info), %l5;				\
    200 	b	stubs_common_code;					\
    201 	or	%l5, %lo(fcnname/**/_info), %l5;			\
    202 	SET_SIZE(fcnname);						\
    203 	STUB_DATA(module, fcnname, install_fcn, retfcn, weak)
    204 
    205 #define SCALL_UNLOADABLE(module, fcnname, install_fcn, retfcn, weak)	\
    206 	ENTRY_NP(fcnname);						\
    207 	save	%sp, -SA(MINFRAME), %sp;	/* new window */	\
    208 	set	fcnname/**/_info, %l5;					\
    209 	ld	[%l5 + MODS_FLAG], %l1;		/* installed?? */	\
    210 	btst	MODS_INSTALLED, %l1;					\
    211 	be,a	%xcc, 1f;			/* no, load module */	\
    212 	restore;							\
    213  	ldn	[%l5], %g1;						\
    214 	jmp	%g1;				/* yes, off we go */	\
    215 	restore;							\
    216 1:	save	%sp, -SA(MINFRAME), %sp;/* new frame */			\
    217 	sub	%g0, -SA(MINFRAME), %l4;/* size of stack frame */	\
    218 	sethi	%hi(fcnname/**/_info), %l5;				\
    219 	b	stubs_common_code;					\
    220 	or	%l5, %lo(fcnname/**/_info), %l5;			\
    221 	SET_SIZE(fcnname);						\
    222 	STUB_DATA(module, fcnname, install_fcn, retfcn, weak)
    223 
    224 	.section	".text"
    225 
    226 	/*
    227 	 * We branch here with the fcnname_info pointer in l5
    228 	 * and the frame size in %l4.
    229 	 */
    230 	ENTRY_NP(stubs_common_code)
    231 	cmp	%l4, SA(MINFRAME)
    232 	ble,a,pn %xcc, 2f
    233 	nop
    234 
    235 	sub	%l4, 0x80, %l4		/* skip locals and outs */
    236 	add	%sp, 0x80, %l0
    237 	add	%fp, 0x80, %l1		/* get original sp before save */
    238 1:
    239 	/* Copy stack frame */
    240 	ldn	[%l1 + STACK_BIAS], %l2
    241 	inc	8, %l1
    242 	stn	%l2, [%l0 + STACK_BIAS]
    243 	deccc	8, %l4
    244 	bg,a	1b
    245 	inc	8, %l0
    246 2:
    247 	call	mod_hold_stub		/* Hold the module */
    248 	mov	%l5, %o0
    249 	cmp	%o0, -1			/* if error then return error */
    250 	bne,a	1f
    251 	nop
    252 	ldn	[%l5 + MODS_RETFCN], %i0
    253 	call	%i0
    254 	nop
    255 	ret
    256 	restore	%o0, 0, %o0
    257 1:
    258 	ldn	[%l5], %g1
    259 	mov	%i0, %o0	/* copy over incoming args, if number of */
    260 	mov	%i1, %o1	/* args is > 6 then we copied them above */
    261 	mov	%i2, %o2
    262 	mov	%i3, %o3
    263 	mov	%i4, %o4
    264 	call	%g1		/* jump to the stub function */
    265 	mov	%i5, %o5
    266 	mov	%o0, %i0	/* copy any return values */
    267 	mov	%o1, %i1
    268 	call	mod_release_stub	/* release hold on module */
    269 	mov	%l5, %o0
    270 	ret			/* return to caller */
    271 	restore
    272 	SET_SIZE(stubs_common_code)
    273 
    274 ! this is just a marker for the area of text that contains stubs
    275 	.seg ".text"
    276 	.global stubs_base
    277 stubs_base:
    278 	nop
    279 
    280 /*
    281  * WARNING WARNING WARNING!!!!!!
    282  *
    283  * On the MODULE macro you MUST NOT use any spaces!!! They are
    284  * significant to the preprocessor.  With ansi c there is a way around this
    285  * but for some reason (yet to be investigated) ansi didn't work for other
    286  * reasons!
    287  *
    288  * When zero is used as the return function, the system will call
    289  * panic if the stub can't be resolved.
    290  */
    291 
    292 /*
    293  * Stubs for devfs. A non-unloadable module.
    294  */
    295 #ifndef DEVFS_MODULE
    296 	MODULE(devfs,fs);
    297 	NO_UNLOAD_STUB(devfs, devfs_clean,		nomod_minus_one);
    298 	NO_UNLOAD_STUB(devfs, devfs_lookupname,		nomod_minus_one);
    299 	NO_UNLOAD_STUB(devfs, devfs_walk,		nomod_minus_one);
    300 	NO_UNLOAD_STUB(devfs, devfs_devpolicy,		nomod_minus_one);
    301 	NO_UNLOAD_STUB(devfs, devfs_reset_perm,		nomod_minus_one);
    302 	NO_UNLOAD_STUB(devfs, devfs_remdrv_cleanup,	nomod_minus_one);
    303 	END_MODULE(devfs);
    304 #endif
    305 
    306 /*
    307  * Stubs for /dev fs.
    308  */
    309 #ifndef DEV_MODULE
    310 	MODULE(dev, fs);
    311 	NO_UNLOAD_STUB(dev, sdev_modctl_readdir,	nomod_minus_one);
    312 	NO_UNLOAD_STUB(dev, sdev_modctl_readdir_free,	nomod_minus_one);
    313 	NO_UNLOAD_STUB(dev, devname_filename_register,	nomod_minus_one);
    314 	NO_UNLOAD_STUB(dev, sdev_modctl_devexists,	nomod_minus_one);
    315 	NO_UNLOAD_STUB(dev, devname_profile_update,	nomod_minus_one);
    316 	NO_UNLOAD_STUB(dev, sdev_devstate_change,	nomod_minus_one);
    317 	NO_UNLOAD_STUB(dev, devvt_getvnodeops,		nomod_minus_one);
    318 	NO_UNLOAD_STUB(dev, devpts_getvnodeops,		nomod_zero);
    319 	END_MODULE(dev);
    320 #endif
    321 
    322 /*
    323  * Stubs for specfs. A non-unloadable module.
    324  */
    325 
    326 #ifndef SPEC_MODULE
    327 	MODULE(specfs,fs);
    328 	NO_UNLOAD_STUB(specfs, common_specvp,  	nomod_zero);
    329 	NO_UNLOAD_STUB(specfs, makectty,		nomod_zero);
    330 	NO_UNLOAD_STUB(specfs, makespecvp,      	nomod_zero);
    331 	NO_UNLOAD_STUB(specfs, smark,           	nomod_zero);
    332 	NO_UNLOAD_STUB(specfs, spec_segmap,     	nomod_einval);
    333 	NO_UNLOAD_STUB(specfs, specfind,        	nomod_zero);
    334 	NO_UNLOAD_STUB(specfs, specvp,          	nomod_zero);
    335 	NO_UNLOAD_STUB(specfs, devi_stillreferenced,	nomod_zero);
    336 	NO_UNLOAD_STUB(specfs, spec_getvnodeops,	nomod_zero);
    337 	NO_UNLOAD_STUB(specfs, spec_char_map,		nomod_zero);
    338 	NO_UNLOAD_STUB(specfs, specvp_devfs,  		nomod_zero);
    339 	NO_UNLOAD_STUB(specfs, spec_assoc_vp_with_devi,	nomod_void);
    340 	NO_UNLOAD_STUB(specfs, spec_hold_devi_by_vp,	nomod_zero);
    341 	NO_UNLOAD_STUB(specfs, spec_snode_walk,		nomod_void);
    342 	NO_UNLOAD_STUB(specfs, spec_devi_open_count,	nomod_minus_one);
    343 	NO_UNLOAD_STUB(specfs, spec_is_clone,		nomod_zero);
    344 	NO_UNLOAD_STUB(specfs, spec_is_selfclone,	nomod_zero);
    345 	NO_UNLOAD_STUB(specfs, spec_fence_snode,	nomod_minus_one);
    346 	NO_UNLOAD_STUB(specfs, spec_unfence_snode,	nomod_minus_one);
    347 	END_MODULE(specfs);
    348 #endif
    349 
    350 
    351 /*
    352  * Stubs for sockfs. A non-unloadable module.
    353  */
    354 #ifndef SOCK_MODULE
    355 	MODULE(sockfs, fs);
    356 	SCALL_NU_STUB(sockfs, so_socket,  	nomod_zero);
    357 	SCALL_NU_STUB(sockfs, so_socketpair,	nomod_zero);
    358 	SCALL_NU_STUB(sockfs, bind,  		nomod_zero);
    359 	SCALL_NU_STUB(sockfs, listen,  		nomod_zero);
    360 	SCALL_NU_STUB(sockfs, accept,  		nomod_zero);
    361 	SCALL_NU_STUB(sockfs, connect,  	nomod_zero);
    362 	SCALL_NU_STUB(sockfs, shutdown,  	nomod_zero);
    363 	SCALL_NU_STUB(sockfs, recv,  		nomod_zero);
    364 	SCALL_NU_STUB(sockfs, recvfrom,  	nomod_zero);
    365 	SCALL_NU_STUB(sockfs, recvmsg,  	nomod_zero);
    366 	SCALL_NU_STUB(sockfs, send,  		nomod_zero);
    367 	SCALL_NU_STUB(sockfs, sendmsg,  	nomod_zero);
    368 	SCALL_NU_STUB(sockfs, sendto, 		nomod_zero);
    369 #ifdef _SYSCALL32_IMPL
    370 	SCALL_NU_STUB(sockfs, recv32,  		nomod_zero);
    371 	SCALL_NU_STUB(sockfs, recvfrom32,  	nomod_zero);
    372 	SCALL_NU_STUB(sockfs, send32,  		nomod_zero);
    373 	SCALL_NU_STUB(sockfs, sendto32, 	nomod_zero);
    374 #endif /* _SYSCALL32_IMPL */
    375 	SCALL_NU_STUB(sockfs, getpeername,  	nomod_zero);
    376 	SCALL_NU_STUB(sockfs, getsockname,  	nomod_zero);
    377 	SCALL_NU_STUB(sockfs, getsockopt,  	nomod_zero);
    378 	SCALL_NU_STUB(sockfs, setsockopt,  	nomod_zero);
    379 	SCALL_NU_STUB(sockfs, sockconfig,  	nomod_zero);
    380 	NO_UNLOAD_STUB(sockfs, sock_getmsg,  	nomod_zero);
    381 	NO_UNLOAD_STUB(sockfs, sock_putmsg,  	nomod_zero);
    382 	NO_UNLOAD_STUB(sockfs, sosendfile64,  	nomod_zero);
    383 	NO_UNLOAD_STUB(sockfs, snf_segmap,  	nomod_einval);
    384 	NO_UNLOAD_STUB(sockfs, sock_getfasync,  nomod_zero);
    385 	NO_UNLOAD_STUB(sockfs, nl7c_sendfilev,  nomod_zero);
    386 	NO_UNLOAD_STUB(sockfs, sotpi_sototpi,  nomod_zero);
    387 	NO_UNLOAD_STUB(sockfs, socket_sendmblk,	nomod_zero);
    388 	NO_UNLOAD_STUB(sockfs, socket_setsockopt,	nomod_zero);
    389 	END_MODULE(sockfs);
    390 #endif
    391 
    392 /*
    393  * IPsec stubs.
    394  */
    395 
    396 #ifndef	IPSECAH_MODULE
    397 	MODULE(ipsecah,drv);
    398 	WSTUB(ipsecah,	ipsec_construct_inverse_acquire,	nomod_zero);
    399 	WSTUB(ipsecah,	sadb_acquire,		nomod_zero);
    400 	WSTUB(ipsecah,	sadb_ill_download,	nomod_zero);
    401 	WSTUB(ipsecah,	ipsecah_algs_changed,	nomod_zero);
    402 	WSTUB(ipsecah,	sadb_alg_update,	nomod_zero);
    403 	WSTUB(ipsecah,	sadb_unlinkassoc,	nomod_zero);
    404 	WSTUB(ipsecah,	sadb_insertassoc,	nomod_zero);
    405 	WSTUB(ipsecah,	ipsecah_in_assocfailure,	nomod_zero);
    406 	WSTUB(ipsecah,	sadb_set_lpkt,		nomod_zero);
    407 	WSTUB(ipsecah,	ipsecah_icmp_error,	nomod_zero);
    408 	END_MODULE(ipsecah);
    409 #endif
    410 
    411 #ifndef	IPSECESP_MODULE
    412 	MODULE(ipsecesp,drv);
    413 	WSTUB(ipsecesp,	ipsecesp_fill_defs,	nomod_zero);
    414 	WSTUB(ipsecesp,	ipsecesp_algs_changed,	nomod_zero);
    415 	WSTUB(ipsecesp, ipsecesp_in_assocfailure,	nomod_zero);
    416 	WSTUB(ipsecesp, ipsecesp_init_funcs,	nomod_zero);
    417 	WSTUB(ipsecesp,	ipsecesp_icmp_error,	nomod_zero);
    418 	WSTUB(ipsecesp,	ipsecesp_send_keepalive,	nomod_zero);
    419 	END_MODULE(ipsecesp);
    420 #endif
    421 
    422 #ifndef KEYSOCK_MODULE
    423 	MODULE(keysock,drv);
    424 	WSTUB(keysock,	keysock_plumb_ipsec,	nomod_zero);
    425 	WSTUB(keysock,	keysock_extended_reg,	nomod_zero);
    426 	WSTUB(keysock,	keysock_next_seq,	nomod_zero);
    427 	END_MODULE(keysock);
    428 #endif
    429 
    430 #ifndef SPDSOCK_MODULE
    431 	MODULE(spdsock,drv);
    432 	WSTUB(spdsock,	spdsock_update_pending_algs,	nomod_zero);
    433 	END_MODULE(spdsock);
    434 #endif
    435 
    436 /*
    437  * Stubs for nfs common code.
    438  * XXX nfs_getvnodeops should go away with removal of kludge in vnode.c
    439  */
    440 #ifndef NFS_MODULE
    441 	MODULE(nfs,fs);
    442 	WSTUB(nfs,	nfs_getvnodeops,	nomod_zero);
    443 	WSTUB(nfs,	nfs_perror,		nomod_zero);
    444 	WSTUB(nfs,	nfs_cmn_err,		nomod_zero);
    445 	WSTUB(nfs,	clcleanup_zone,		nomod_zero);
    446 	WSTUB(nfs,	clcleanup4_zone,	nomod_zero);
    447 	END_MODULE(nfs);
    448 #endif
    449 
    450 /*
    451  * Stubs for nfs_dlboot (diskless booting).
    452  */
    453 #ifndef NFS_DLBOOT_MODULE
    454 	MODULE(nfs_dlboot,misc);
    455 	STUB(nfs_dlboot,	mount_root,	nomod_minus_one);
    456 	STUB(nfs_dlboot,        dhcpinit,       nomod_minus_one);
    457 	END_MODULE(nfs_dlboot);
    458 #endif
    459 
    460 /*
    461  * Stubs for nfs server-only code.
    462  */
    463 #ifndef NFSSRV_MODULE
    464 	MODULE(nfssrv,misc);
    465 	STUB(nfssrv,		lm_nfs3_fhtovp,	nomod_minus_one);
    466 	STUB(nfssrv,		lm_fhtovp,	nomod_minus_one);
    467 	STUB(nfssrv,		exportfs,	nomod_minus_one);
    468 	STUB(nfssrv,		nfs_getfh,	nomod_minus_one);
    469 	STUB(nfssrv,		nfsl_flush,	nomod_minus_one);
    470 	STUB(nfssrv,		rfs4_check_delegated, nomod_zero);
    471 	STUB(nfssrv,		mountd_args,	nomod_minus_one);
    472 	NO_UNLOAD_STUB(nfssrv,	rdma_start,	nomod_zero);
    473 	NO_UNLOAD_STUB(nfssrv,	nfs_svc,	nomod_zero);
    474 	END_MODULE(nfssrv);
    475 #endif
    476 
    477 /*
    478  * Stubs for kernel lock manager.
    479  */
    480 #ifndef KLM_MODULE
    481 	MODULE(klmmod,misc);
    482 	NO_UNLOAD_STUB(klmmod, lm_svc,		nomod_zero);
    483 	NO_UNLOAD_STUB(klmmod, lm_shutdown,	nomod_zero);
    484 	NO_UNLOAD_STUB(klmmod, lm_unexport,	nomod_zero);
    485 	NO_UNLOAD_STUB(klmmod, lm_cprresume,	nomod_zero);
    486 	NO_UNLOAD_STUB(klmmod, lm_cprsuspend,	nomod_zero);
    487 	NO_UNLOAD_STUB(klmmod, lm_safelock, nomod_zero);
    488 	NO_UNLOAD_STUB(klmmod, lm_safemap, nomod_zero);
    489 	NO_UNLOAD_STUB(klmmod, lm_has_sleep, nomod_zero);
    490 	NO_UNLOAD_STUB(klmmod, lm_free_config, nomod_zero);
    491 	NO_UNLOAD_STUB(klmmod, lm_vp_active, nomod_zero);
    492 	NO_UNLOAD_STUB(klmmod, lm_get_sysid, nomod_zero);
    493 	NO_UNLOAD_STUB(klmmod, lm_rel_sysid, nomod_zero);
    494 	NO_UNLOAD_STUB(klmmod, lm_alloc_sysidt, nomod_minus_one);
    495 	NO_UNLOAD_STUB(klmmod, lm_free_sysidt, nomod_zero);
    496 	NO_UNLOAD_STUB(klmmod, lm_sysidt, nomod_minus_one);
    497 	END_MODULE(klmmod);
    498 #endif
    499 
    500 #ifndef KLMOPS_MODULE
    501 	MODULE(klmops,misc);
    502 	NO_UNLOAD_STUB(klmops, lm_frlock,	nomod_zero);
    503 	NO_UNLOAD_STUB(klmops, lm4_frlock,	nomod_zero);
    504 	NO_UNLOAD_STUB(klmops, lm_shrlock,	nomod_zero);
    505 	NO_UNLOAD_STUB(klmops, lm4_shrlock,	nomod_zero);
    506 	NO_UNLOAD_STUB(klmops, lm_nlm_dispatch,	nomod_zero);
    507 	NO_UNLOAD_STUB(klmops, lm_nlm4_dispatch,	nomod_zero);
    508 	NO_UNLOAD_STUB(klmops, lm_nlm_reclaim,	nomod_zero);
    509 	NO_UNLOAD_STUB(klmops, lm_nlm4_reclaim,	nomod_zero);
    510 	NO_UNLOAD_STUB(klmops, lm_register_lock_locally, nomod_zero);
    511 	END_MODULE(klmops);
    512 #endif
    513 
    514 /*
    515  * Stubs for kernel TLI module
    516  *   XXX currently we never allow this to unload
    517  */
    518 #ifndef TLI_MODULE
    519 	MODULE(tlimod,misc);
    520 	NO_UNLOAD_STUB(tlimod, t_kopen,		nomod_minus_one);
    521 	NO_UNLOAD_STUB(tlimod, t_kunbind,  	nomod_zero);
    522 	NO_UNLOAD_STUB(tlimod, t_kadvise,  	nomod_zero);
    523 	NO_UNLOAD_STUB(tlimod, t_krcvudata,  	nomod_zero);
    524 	NO_UNLOAD_STUB(tlimod, t_ksndudata,  	nomod_zero);
    525 	NO_UNLOAD_STUB(tlimod, t_kalloc,  	nomod_zero);
    526 	NO_UNLOAD_STUB(tlimod, t_kbind,  	nomod_zero);
    527 	NO_UNLOAD_STUB(tlimod, t_kclose,  	nomod_zero);
    528 	NO_UNLOAD_STUB(tlimod, t_kspoll,  	nomod_zero);
    529 	NO_UNLOAD_STUB(tlimod, t_kfree,  	nomod_zero);
    530 	END_MODULE(tlimod);
    531 #endif
    532 
    533 /*
    534  * Stubs for kernel RPC module
    535  *   XXX currently we never allow this to unload
    536  */
    537 #ifndef RPC_MODULE
    538 	MODULE(rpcmod,strmod);
    539 	NO_UNLOAD_STUB(rpcmod, clnt_tli_kcreate,	nomod_minus_one);
    540 	NO_UNLOAD_STUB(rpcmod, svc_tli_kcreate,		nomod_minus_one);
    541 	NO_UNLOAD_STUB(rpcmod, bindresvport,		nomod_minus_one);
    542 	NO_UNLOAD_STUB(rpcmod, rdma_register_mod,	nomod_minus_one);
    543 	NO_UNLOAD_STUB(rpcmod, rdma_unregister_mod,	nomod_minus_one);
    544 	NO_UNLOAD_STUB(rpcmod, svc_queuereq,		nomod_minus_one);
    545 	NO_UNLOAD_STUB(rpcmod, clist_add,		nomod_minus_one);
    546 	END_MODULE(rpcmod);
    547 #endif
    548 
    549 /*
    550  * Stubs for des
    551  */
    552 #ifndef DES_MODULE
    553 	MODULE(des,misc);
    554 	STUB(des, cbc_crypt, 	 	nomod_zero);
    555 	STUB(des, ecb_crypt, 		nomod_zero);
    556 	STUB(des, _des_crypt,		nomod_zero);
    557 	END_MODULE(des);
    558 #endif
    559 
    560 /*
    561  * Stubs for procfs. A non-unloadable module.
    562  */
    563 #ifndef PROC_MODULE
    564 	MODULE(procfs,fs);
    565 	NO_UNLOAD_STUB(procfs, prfree,		nomod_zero);
    566 	NO_UNLOAD_STUB(procfs, prexit,		nomod_zero);
    567 	NO_UNLOAD_STUB(procfs, prlwpfree,	nomod_zero);
    568 	NO_UNLOAD_STUB(procfs, prlwpexit,	nomod_zero);
    569 	NO_UNLOAD_STUB(procfs, prinvalidate,	nomod_zero);
    570 	NO_UNLOAD_STUB(procfs, prnsegs,		nomod_zero);
    571 	NO_UNLOAD_STUB(procfs, prgetcred,	nomod_zero);
    572 	NO_UNLOAD_STUB(procfs, prgetpriv,	nomod_zero);
    573 	NO_UNLOAD_STUB(procfs, prgetprivsize,	nomod_zero);
    574 	NO_UNLOAD_STUB(procfs, prgetstatus,	nomod_zero);
    575 	NO_UNLOAD_STUB(procfs, prgetlwpstatus,	nomod_zero);
    576 	NO_UNLOAD_STUB(procfs, prgetpsinfo,	nomod_zero);
    577 	NO_UNLOAD_STUB(procfs, prgetlwpsinfo,	nomod_zero);
    578 	NO_UNLOAD_STUB(procfs, oprgetstatus,	nomod_zero);
    579 	NO_UNLOAD_STUB(procfs, oprgetpsinfo,	nomod_zero);
    580 #ifdef _SYSCALL32_IMPL
    581 	NO_UNLOAD_STUB(procfs, prgetstatus32,	nomod_zero);
    582 	NO_UNLOAD_STUB(procfs, prgetlwpstatus32, nomod_zero);
    583 	NO_UNLOAD_STUB(procfs, prgetpsinfo32,	nomod_zero);
    584 	NO_UNLOAD_STUB(procfs, prgetlwpsinfo32,	nomod_zero);
    585 	NO_UNLOAD_STUB(procfs, oprgetstatus32,	nomod_zero);
    586 	NO_UNLOAD_STUB(procfs, oprgetpsinfo32,	nomod_zero);
    587 #endif	/* _SYSCALL32_IMPL */
    588 	NO_UNLOAD_STUB(procfs, prnotify,	nomod_zero);
    589 	NO_UNLOAD_STUB(procfs, prexecstart,	nomod_zero);
    590 	NO_UNLOAD_STUB(procfs, prexecend,	nomod_zero);
    591 	NO_UNLOAD_STUB(procfs, prrelvm,		nomod_zero);
    592 	NO_UNLOAD_STUB(procfs, prbarrier,	nomod_zero);
    593 	NO_UNLOAD_STUB(procfs, estimate_msacct,	nomod_zero);
    594 	NO_UNLOAD_STUB(procfs, pr_getprot,	nomod_zero);
    595 	NO_UNLOAD_STUB(procfs, pr_getprot_done,	nomod_zero);
    596 	NO_UNLOAD_STUB(procfs, pr_getsegsize,	nomod_zero);
    597 	NO_UNLOAD_STUB(procfs, pr_isobject,	nomod_zero);
    598 	NO_UNLOAD_STUB(procfs, pr_isself,	nomod_zero);
    599 	NO_UNLOAD_STUB(procfs, pr_allstopped,	nomod_zero);
    600 	NO_UNLOAD_STUB(procfs, pr_free_watched_pages, nomod_zero);
    601 	END_MODULE(procfs);
    602 #endif
    603 
    604 /*
    605  * Stubs for fifofs
    606  */
    607 #ifndef FIFO_MODULE
    608 	MODULE(fifofs,fs);
    609 	STUB(fifofs, fifovp,      	0);
    610 	STUB(fifofs, fifo_getinfo,	0);
    611 	STUB(fifofs, fifo_vfastoff,	0);
    612 	END_MODULE(fifofs);
    613 #endif
    614 
    615 /*
    616  * Stubs for ufs
    617  *
    618  * This is needed to support the old quotactl system call.
    619  * When the old sysent stuff goes away, this will need to be revisited.
    620  */
    621 #ifndef UFS_MODULE
    622 	MODULE(ufs,fs);
    623 	STUB(ufs, quotactl, nomod_minus_one);
    624 	STUB(ufs, ufs_remountroot, 0);
    625 	END_MODULE(ufs);
    626 #endif
    627 
    628 /*
    629  * Stubs for zfs
    630  */
    631 #ifndef ZFS_MODULE
    632 	MODULE(zfs,fs);
    633 	STUB(zfs, spa_boot_init, nomod_minus_one);
    634 	END_MODULE(zfs);
    635 #endif
    636 
    637 /*
    638  * Stubs for dcfs
    639  */
    640 #ifndef DCFS_MODULE
    641 	MODULE(dcfs,fs);
    642 	STUB(dcfs, decompvp, 0);
    643 	END_MODULE(dcfs);
    644 #endif
    645 
    646 /*
    647  * Stubs for namefs
    648  */
    649 #ifndef NAMEFS_MODULE
    650 	MODULE(namefs,fs);
    651 	STUB(namefs, nm_unmountall, 	0);
    652 	END_MODULE(namefs);
    653 #endif
    654 
    655 /*
    656  * Stubs for ts_dptbl
    657  */
    658 #ifndef TS_DPTBL_MODULE
    659 	MODULE(TS_DPTBL,sched);
    660 	STUB(TS_DPTBL, ts_getdptbl,		0);
    661 	STUB(TS_DPTBL, ts_getkmdpris,		0);
    662 	STUB(TS_DPTBL, ts_getmaxumdpri,	0);
    663 	END_MODULE(TS_DPTBL);
    664 #endif
    665 
    666 /*
    667  * Stubs for rt_dptbl
    668  */
    669 #ifndef RT_DPTBL_MODULE
    670 	MODULE(RT_DPTBL,sched);
    671 	STUB(RT_DPTBL, rt_getdptbl,		0);
    672 	END_MODULE(RT_DPTBL);
    673 #endif
    674 
    675 /*
    676  * Stubs for ia_dptbl
    677  */
    678 #ifndef IA_DPTBL_MODULE
    679 	MODULE(IA_DPTBL,sched);
    680 	STUB(IA_DPTBL, ia_getdptbl,		0);
    681 	STUB(IA_DPTBL, ia_getkmdpris,		0);
    682 	STUB(IA_DPTBL, ia_getmaxumdpri,	0);
    683 	END_MODULE(IA_DPTBL);
    684 #endif
    685 
    686 /*
    687  * Stubs for FSS scheduler
    688  */
    689 #ifndef	FSS_MODULE
    690 	MODULE(FSS,sched);
    691 	WSTUB(FSS, fss_allocbuf,		nomod_zero);
    692 	WSTUB(FSS, fss_freebuf,			nomod_zero);
    693 	WSTUB(FSS, fss_changeproj,		nomod_zero);
    694 	WSTUB(FSS, fss_changepset,		nomod_zero);
    695 	END_MODULE(FSS);
    696 #endif
    697 
    698 /*
    699  * Stubs for fx_dptbl
    700  */
    701 #ifndef FX_DPTBL_MODULE
    702 	MODULE(FX_DPTBL,sched);
    703 	STUB(FX_DPTBL, fx_getdptbl,		0);
    704 	STUB(FX_DPTBL, fx_getmaxumdpri,		0);
    705 	END_MODULE(FX_DPTBL);
    706 #endif
    707 
    708 /*
    709  * Stubs for kb (only needed for 'win')
    710  */
    711 #ifndef KB_MODULE
    712 	MODULE(kb,strmod);
    713 	STUB(kb, strsetwithdecimal,	0);
    714 	END_MODULE(kb);
    715 #endif
    716 
    717 /*
    718  * Stubs for swapgeneric
    719  */
    720 #ifndef SWAPGENERIC_MODULE
    721 	MODULE(swapgeneric,misc);
    722 	STUB(swapgeneric, rootconf,     0);
    723 	STUB(swapgeneric, svm_rootconf, 0);
    724 	STUB(swapgeneric, getfstype,    0);
    725 	STUB(swapgeneric, getrootdev,   0);
    726 	STUB(swapgeneric, getfsname,    0);
    727 	STUB(swapgeneric, loadrootmodules, 0);
    728 	END_MODULE(swapgeneric);
    729 #endif
    730 
    731 /*
    732  * Stubs for bootdev
    733  */
    734 #ifndef BOOTDEV_MODULE
    735 	MODULE(bootdev,misc);
    736 	STUB(bootdev, i_devname_to_promname, 0);
    737 	STUB(bootdev, i_promname_to_devname, 0);
    738 	STUB(bootdev, i_convert_boot_device_name, 0);
    739 	END_MODULE(bootdev);
    740 #endif
    741 
    742 /*
    743  * stubs for strplumb...
    744  */
    745 #ifndef STRPLUMB_MODULE
    746 	MODULE(strplumb,misc);
    747 	STUB(strplumb, strplumb,     0);
    748 	STUB(strplumb, strplumb_load, 0);
    749 	STUB(strplumb, strplumb_get_netdev_path, 0)
    750 	END_MODULE(strplumb);
    751 #endif
    752 
    753 /*
    754  * Stubs for console configuration module
    755  */
    756 #ifndef CONSCONFIG_MODULE
    757 	MODULE(consconfig,misc);
    758 	STUB(consconfig, consconfig,	0);
    759 	STUB(consconfig, consconfig_get_usb_kb_path,	0);
    760 	STUB(consconfig, consconfig_get_usb_ms_path,	0);
    761 	STUB(consconfig, consconfig_console_is_ready,	0);
    762 	END_MODULE(consconfig);
    763 #endif
    764 
    765 /*
    766  * Stubs for zs (uart) module
    767  */
    768 #ifndef ZS_MODULE
    769 	MODULE(zs,drv);
    770 	STUB(zs, zsgetspeed,		0);
    771 	END_MODULE(zs);
    772 #endif
    773 
    774 /*
    775  * Stubs for accounting.
    776  */
    777 #ifndef SYSACCT_MODULE
    778 	MODULE(sysacct,sys);
    779 	WSTUB(sysacct, acct,  		nomod_zero);
    780 	WSTUB(sysacct, acct_fs_in_use,	nomod_zero);
    781 	END_MODULE(sysacct);
    782 #endif
    783 
    784 /*
    785  * Stubs for semaphore routines. sem.c
    786  */
    787 #ifndef SEMSYS_MODULE
    788 	MODULE(semsys,sys);
    789 	WSTUB(semsys, semexit,		nomod_zero);
    790 	END_MODULE(semsys);
    791 #endif
    792 
    793 /*
    794  * Stubs for shmem routines. shm.c
    795  */
    796 #ifndef SHMSYS_MODULE
    797 	MODULE(shmsys,sys);
    798 	WSTUB(shmsys, shmexit,		nomod_zero);
    799 	WSTUB(shmsys, shmfork,		nomod_zero);
    800 	WSTUB(shmsys, shmgetid,		nomod_minus_one);
    801 	END_MODULE(shmsys);
    802 #endif
    803 
    804 /*
    805  * Stubs for doors
    806  */
    807 #ifndef DOORFS_MODULE
    808 	MODULE(doorfs,sys);
    809 	WSTUB(doorfs, door_slam,			nomod_zero);
    810 	WSTUB(doorfs, door_exit,			nomod_zero);
    811 	WSTUB(doorfs, door_revoke_all,			nomod_zero);
    812 	WSTUB(doorfs, door_fork,			nomod_zero);
    813 	NO_UNLOAD_STUB(doorfs, door_upcall,		nomod_einval);
    814 	NO_UNLOAD_STUB(doorfs, door_ki_create,		nomod_einval);
    815 	NO_UNLOAD_STUB(doorfs, door_ki_open,		nomod_einval);
    816 	NO_UNLOAD_STUB(doorfs, door_ki_lookup,		nomod_zero);
    817 	WSTUB(doorfs, door_ki_upcall,			nomod_einval);
    818 	WSTUB(doorfs, door_ki_upcall_limited,		nomod_einval);
    819 	WSTUB(doorfs, door_ki_hold,			nomod_zero);
    820 	WSTUB(doorfs, door_ki_rele,			nomod_zero);
    821 	WSTUB(doorfs, door_ki_info,			nomod_einval);
    822 	END_MODULE(doorfs);
    823 #endif
    824 
    825 /*
    826  * Stubs for idmap
    827  */
    828 #ifndef IDMAP_MODULE
    829 	MODULE(idmap,misc);
    830 	STUB(idmap, kidmap_batch_getgidbysid,	nomod_zero);
    831 	STUB(idmap, kidmap_batch_getpidbysid,	nomod_zero);
    832 	STUB(idmap, kidmap_batch_getsidbygid,	nomod_zero);
    833 	STUB(idmap, kidmap_batch_getsidbyuid,	nomod_zero);
    834 	STUB(idmap, kidmap_batch_getuidbysid,	nomod_zero);
    835 	STUB(idmap, kidmap_get_create,		nomod_zero);
    836 	STUB(idmap, kidmap_get_destroy,		nomod_zero);
    837 	STUB(idmap, kidmap_get_mappings,	nomod_zero);
    838 	STUB(idmap, kidmap_getgidbysid,		nomod_zero);
    839 	STUB(idmap, kidmap_getpidbysid,		nomod_zero);
    840 	STUB(idmap, kidmap_getsidbygid,		nomod_zero);
    841 	STUB(idmap, kidmap_getsidbyuid,		nomod_zero);
    842 	STUB(idmap, kidmap_getuidbysid,		nomod_zero);
    843 	STUB(idmap, idmap_get_door,		nomod_einval);
    844 	STUB(idmap, idmap_unreg_dh,		nomod_einval);
    845 	STUB(idmap, idmap_reg_dh,		nomod_einval);
    846 	STUB(idmap, idmap_purge_cache,		nomod_einval);
    847 	END_MODULE(idmap);
    848 #endif
    849 
    850 /*
    851  * Stubs for dma routines. dmaga.c
    852  * (These are only needed for cross-checks, not autoloading)
    853  */
    854 #ifndef DMA_MODULE
    855 	MODULE(dma,drv);
    856 	WSTUB(dma, dma_alloc,		nomod_zero); /* (DMAGA *)0 */
    857 	WSTUB(dma, dma_free,		nomod_zero); /* (DMAGA *)0 */
    858 	END_MODULE(dma);
    859 #endif
    860 
    861 /*
    862  * Stubs for auditing.
    863  */
    864 #ifndef C2AUDIT_MODULE
    865 	MODULE(c2audit,sys);
    866 	STUB(c2audit,  audit_init,			nomod_zero);
    867 	STUB(c2audit,  _auditsys,			nomod_zero);
    868 	NO_UNLOAD_STUB(c2audit, audit_free,		nomod_zero);
    869 	NO_UNLOAD_STUB(c2audit, audit_start, 		nomod_zero);
    870 	NO_UNLOAD_STUB(c2audit, audit_finish,		nomod_zero);
    871 	NO_UNLOAD_STUB(c2audit, audit_newproc,		nomod_zero);
    872 	NO_UNLOAD_STUB(c2audit, audit_pfree,		nomod_zero);
    873 	NO_UNLOAD_STUB(c2audit, audit_thread_free,	nomod_zero);
    874 	NO_UNLOAD_STUB(c2audit, audit_thread_create,	nomod_zero);
    875 	NO_UNLOAD_STUB(c2audit, audit_falloc,		nomod_zero);
    876 	NO_UNLOAD_STUB(c2audit, audit_unfalloc,		nomod_zero);
    877 	NO_UNLOAD_STUB(c2audit, audit_closef,		nomod_zero);
    878 	NO_UNLOAD_STUB(c2audit, audit_copen,		nomod_zero);
    879 	NO_UNLOAD_STUB(c2audit, audit_core_start,	nomod_zero);
    880 	NO_UNLOAD_STUB(c2audit, audit_core_finish,	nomod_zero);
    881 	NO_UNLOAD_STUB(c2audit, audit_stropen,		nomod_zero);
    882 	NO_UNLOAD_STUB(c2audit, audit_strclose,		nomod_zero);
    883 	NO_UNLOAD_STUB(c2audit, audit_strioctl,		nomod_zero);
    884 	NO_UNLOAD_STUB(c2audit, audit_strputmsg,	nomod_zero);
    885 	NO_UNLOAD_STUB(c2audit, audit_c2_revoke,	nomod_zero);
    886 	NO_UNLOAD_STUB(c2audit, audit_savepath,		nomod_zero);
    887 	NO_UNLOAD_STUB(c2audit, audit_anchorpath,	nomod_zero);
    888 	NO_UNLOAD_STUB(c2audit, audit_addcomponent,	nomod_zero);
    889 	NO_UNLOAD_STUB(c2audit, audit_exit,		nomod_zero);
    890 	NO_UNLOAD_STUB(c2audit, audit_exec,		nomod_zero);
    891 	NO_UNLOAD_STUB(c2audit, audit_symlink,		nomod_zero);
    892 	NO_UNLOAD_STUB(c2audit, audit_symlink_create,	nomod_zero);
    893 	NO_UNLOAD_STUB(c2audit, audit_vncreate_start,	nomod_zero);
    894 	NO_UNLOAD_STUB(c2audit, audit_vncreate_finish,	nomod_zero);
    895 	NO_UNLOAD_STUB(c2audit, audit_enterprom,	nomod_zero);
    896 	NO_UNLOAD_STUB(c2audit, audit_exitprom,		nomod_zero);
    897 	NO_UNLOAD_STUB(c2audit, audit_chdirec,		nomod_zero);
    898 	NO_UNLOAD_STUB(c2audit, audit_getf,		nomod_zero);
    899 	NO_UNLOAD_STUB(c2audit, audit_setf,		nomod_zero);
    900 	NO_UNLOAD_STUB(c2audit, audit_sock,		nomod_zero);
    901 	NO_UNLOAD_STUB(c2audit, audit_strgetmsg,	nomod_zero);
    902 	NO_UNLOAD_STUB(c2audit, audit_ipc,		nomod_zero);
    903 	NO_UNLOAD_STUB(c2audit, audit_ipcget,		nomod_zero);
    904 	NO_UNLOAD_STUB(c2audit, audit_lookupname,	nomod_zero);
    905 	NO_UNLOAD_STUB(c2audit, audit_pathcomp,		nomod_zero);
    906 	NO_UNLOAD_STUB(c2audit, audit_fdsend,		nomod_zero);
    907 	NO_UNLOAD_STUB(c2audit, audit_fdrecv,		nomod_zero);
    908 	NO_UNLOAD_STUB(c2audit, audit_priv,		nomod_zero);
    909 	NO_UNLOAD_STUB(c2audit, audit_setppriv,		nomod_zero);
    910 	NO_UNLOAD_STUB(c2audit, audit_devpolicy,	nomod_zero);
    911 	NO_UNLOAD_STUB(c2audit, audit_setfsat_path,	nomod_zero);
    912 	NO_UNLOAD_STUB(c2audit, audit_cryptoadm,	nomod_zero);
    913 	NO_UNLOAD_STUB(c2audit, audit_update_context,	nomod_zero);
    914 	NO_UNLOAD_STUB(c2audit, audit_kssl,		nomod_zero);
    915 	NO_UNLOAD_STUB(c2audit, audit_pf_policy,	nomod_zero);
    916 	END_MODULE(c2audit);
    917 #endif
    918 
    919 /*
    920  * Stubs for kernel rpc security service module
    921  */
    922 #ifndef RPCSEC_MODULE
    923 	MODULE(rpcsec,misc);
    924 	NO_UNLOAD_STUB(rpcsec, sec_clnt_revoke,		nomod_zero);
    925 	NO_UNLOAD_STUB(rpcsec, authkern_create,		nomod_zero);
    926 	NO_UNLOAD_STUB(rpcsec, sec_svc_msg,		nomod_zero);
    927 	NO_UNLOAD_STUB(rpcsec, sec_svc_control,		nomod_zero);
    928 	END_MODULE(rpcsec);
    929 #endif
    930 
    931 /*
    932  * Stubs for rpc RPCSEC_GSS security service module
    933  */
    934 #ifndef RPCSEC_GSS_MODULE
    935 	MODULE(rpcsec_gss,misc);
    936 	NO_UNLOAD_STUB(rpcsec_gss, __svcrpcsec_gss,		nomod_zero);
    937 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_getcred,		nomod_zero);
    938 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_set_callback,	nomod_zero);
    939 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secget,		nomod_zero);
    940 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secfree,		nomod_zero);
    941 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_seccreate,		nomod_zero);
    942 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_set_defaults,	nomod_zero);
    943 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_revauth,		nomod_zero);
    944 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secpurge,		nomod_zero);
    945 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_cleanup,		nomod_zero);
    946 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_get_versions,	nomod_zero);
    947 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_max_data_length,	nomod_zero);
    948 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_svc_max_data_length,	nomod_zero);
    949 	NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_get_service_type,	nomod_zero);
    950 	END_MODULE(rpcsec_gss);
    951 #endif
    952 
    953 #ifndef IWSCN_MODULE
    954 	MODULE(iwscn,drv);
    955 	STUB(iwscn, srpop, 0);
    956 	END_MODULE(iwscn);
    957 #endif
    958 
    959 /*
    960  * Stubs for checkpoint-resume module
    961  */
    962 #ifndef CPR_MODULE
    963         MODULE(cpr,misc);
    964         STUB(cpr, cpr, 0);
    965         END_MODULE(cpr);
    966 #endif
    967 
    968 /*
    969  * Stubs for VIS module
    970  */
    971 #ifndef VIS_MODULE
    972         MODULE(vis,misc);
    973         STUB(vis, vis_fpu_simulator, 0);
    974         STUB(vis, vis_fldst, 0);
    975         STUB(vis, vis_rdgsr, 0);
    976         STUB(vis, vis_wrgsr, 0);
    977         END_MODULE(vis);
    978 #endif
    979 
    980 /*
    981  * Stubs for kernel probes (tnf module).  Not unloadable.
    982  */
    983 #ifndef TNF_MODULE
    984 	MODULE(tnf,drv);
    985 	NO_UNLOAD_STUB(tnf, tnf_ref32_1,	nomod_zero);
    986 	NO_UNLOAD_STUB(tnf, tnf_string_1,	nomod_zero);
    987 	NO_UNLOAD_STUB(tnf, tnf_opaque_array_1,	nomod_zero);
    988 	NO_UNLOAD_STUB(tnf, tnf_opaque32_array_1, nomod_zero);
    989 	NO_UNLOAD_STUB(tnf, tnf_struct_tag_1,	nomod_zero);
    990 	NO_UNLOAD_STUB(tnf, tnf_allocate,	nomod_zero);
    991 	END_MODULE(tnf);
    992 #endif
    993 
    994 /*
    995  * Clustering: stubs for bootstrapping.
    996  */
    997 #ifndef CL_BOOTSTRAP
    998 	MODULE(cl_bootstrap,misc);
    999 	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_modload, nomod_minus_one);
   1000 	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_loadrootmodules, nomod_zero);
   1001 	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_rootconf, nomod_zero);
   1002 	NO_UNLOAD_WSTUB(cl_bootstrap, clboot_mountroot, nomod_zero);
   1003 	NO_UNLOAD_WSTUB(cl_bootstrap, clconf_init, nomod_zero);
   1004 	NO_UNLOAD_WSTUB(cl_bootstrap, clconf_get_nodeid, nomod_zero);
   1005 	NO_UNLOAD_WSTUB(cl_bootstrap, clconf_maximum_nodeid, nomod_zero);
   1006 	NO_UNLOAD_WSTUB(cl_bootstrap, cluster, nomod_zero);
   1007 	END_MODULE(cl_bootstrap);
   1008 #endif
   1009 
   1010 /*
   1011  * Clustering: stubs for cluster infrastructure.
   1012  */
   1013 #ifndef CL_COMM_MODULE
   1014 	MODULE(cl_comm,misc);
   1015 	NO_UNLOAD_STUB(cl_comm, cladmin, nomod_minus_one);
   1016 	END_MODULE(cl_comm);
   1017 #endif
   1018 
   1019 /*
   1020  * Clustering: stubs for global file system operations.
   1021  */
   1022 #ifndef PXFS_MODULE
   1023 	MODULE(pxfs,fs);
   1024 	NO_UNLOAD_WSTUB(pxfs, clpxfs_aio_read, nomod_zero);
   1025 	NO_UNLOAD_WSTUB(pxfs, clpxfs_aio_write, nomod_zero);
   1026 	NO_UNLOAD_WSTUB(pxfs, cl_flk_state_transition_notify, nomod_zero);
   1027 	END_MODULE(pxfs);
   1028 #endif
   1029 
   1030 /*
   1031  * Stubs for PCI configurator module (misc/pcicfg).
   1032  */
   1033 #ifndef	PCICFG_MODULE
   1034 	MODULE(pcicfg,misc);
   1035 	STUB(pcicfg, pcicfg_configure, 0);
   1036 	STUB(pcicfg, pcicfg_unconfigure, 0);
   1037 	END_MODULE(pcicfg);
   1038 #endif
   1039 
   1040 #ifndef PCIHP_MODULE
   1041 	MODULE(pcihp,misc);
   1042 	WSTUB(pcihp, pcihp_init, nomod_minus_one);
   1043 	WSTUB(pcihp, pcihp_uninit, nomod_minus_one);
   1044 	WSTUB(pcihp, pcihp_info, nomod_minus_one);
   1045 	WSTUB(pcihp, pcihp_get_cb_ops, nomod_zero);
   1046 	END_MODULE(pcihp);
   1047 #endif
   1048 
   1049 /*
   1050  * Stubs for kernel cryptographic framework module (misc/kcf).
   1051  */
   1052 #ifndef KCF_MODULE
   1053 	MODULE(kcf,misc);
   1054 	NO_UNLOAD_STUB(kcf, crypto_mech2id, nomod_minus_one);
   1055 	NO_UNLOAD_STUB(kcf, crypto_register_provider, nomod_minus_one);
   1056 	NO_UNLOAD_STUB(kcf, crypto_unregister_provider, nomod_minus_one);
   1057 	NO_UNLOAD_STUB(kcf, crypto_provider_notification, nomod_minus_one);
   1058 	NO_UNLOAD_STUB(kcf, crypto_op_notification, nomod_minus_one);
   1059 	NO_UNLOAD_STUB(kcf, crypto_kmflag, nomod_minus_one);
   1060 	NO_UNLOAD_STUB(kcf, crypto_digest, nomod_minus_one);
   1061 	NO_UNLOAD_STUB(kcf, crypto_digest_prov, nomod_minus_one);
   1062 	NO_UNLOAD_STUB(kcf, crypto_digest_init, nomod_minus_one);
   1063 	NO_UNLOAD_STUB(kcf, crypto_digest_init_prov, nomod_minus_one);
   1064 	NO_UNLOAD_STUB(kcf, crypto_digest_update, nomod_minus_one);
   1065 	NO_UNLOAD_STUB(kcf, crypto_digest_final, nomod_minus_one);
   1066 	NO_UNLOAD_STUB(kcf, crypto_digest_key_prov, nomod_minus_one);
   1067 	NO_UNLOAD_STUB(kcf, crypto_encrypt, nomod_minus_one);
   1068 	NO_UNLOAD_STUB(kcf, crypto_encrypt_prov, nomod_minus_one);
   1069 	NO_UNLOAD_STUB(kcf, crypto_encrypt_init, nomod_minus_one);
   1070 	NO_UNLOAD_STUB(kcf, crypto_encrypt_init_prov, nomod_minus_one);
   1071 	NO_UNLOAD_STUB(kcf, crypto_encrypt_update, nomod_minus_one);
   1072 	NO_UNLOAD_STUB(kcf, crypto_encrypt_final, nomod_minus_one);
   1073 	NO_UNLOAD_STUB(kcf, crypto_decrypt, nomod_minus_one);
   1074 	NO_UNLOAD_STUB(kcf, crypto_decrypt_prov, nomod_minus_one);
   1075 	NO_UNLOAD_STUB(kcf, crypto_decrypt_init, nomod_minus_one);
   1076 	NO_UNLOAD_STUB(kcf, crypto_decrypt_init_prov, nomod_minus_one);
   1077 	NO_UNLOAD_STUB(kcf, crypto_decrypt_update, nomod_minus_one);
   1078 	NO_UNLOAD_STUB(kcf, crypto_decrypt_final, nomod_minus_one);
   1079 	NO_UNLOAD_STUB(kcf, crypto_get_all_mech_info, nomod_minus_one);
   1080 	NO_UNLOAD_STUB(kcf, crypto_key_check, nomod_minus_one);
   1081 	NO_UNLOAD_STUB(kcf, crypto_key_check_prov, nomod_minus_one);
   1082 	NO_UNLOAD_STUB(kcf, crypto_key_derive, nomod_minus_one);
   1083 	NO_UNLOAD_STUB(kcf, crypto_key_generate, nomod_minus_one);
   1084 	NO_UNLOAD_STUB(kcf, crypto_key_generate_pair, nomod_minus_one);
   1085 	NO_UNLOAD_STUB(kcf, crypto_key_unwrap, nomod_minus_one);
   1086 	NO_UNLOAD_STUB(kcf, crypto_key_wrap, nomod_minus_one);
   1087 	NO_UNLOAD_STUB(kcf, crypto_mac, nomod_minus_one);
   1088 	NO_UNLOAD_STUB(kcf, crypto_mac_prov, nomod_minus_one);
   1089 	NO_UNLOAD_STUB(kcf, crypto_mac_verify, nomod_minus_one);
   1090 	NO_UNLOAD_STUB(kcf, crypto_mac_verify_prov, nomod_minus_one);
   1091 	NO_UNLOAD_STUB(kcf, crypto_mac_init, nomod_minus_one);
   1092 	NO_UNLOAD_STUB(kcf, crypto_mac_init_prov, nomod_minus_one);
   1093 	NO_UNLOAD_STUB(kcf, crypto_mac_update, nomod_minus_one);
   1094 	NO_UNLOAD_STUB(kcf, crypto_mac_final, nomod_minus_one);
   1095 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt, nomod_minus_one);
   1096 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_prov, nomod_minus_one);
   1097 	NO_UNLOAD_STUB(kcf, crypto_mac_verify_decrypt, nomod_minus_one);
   1098 	NO_UNLOAD_STUB(kcf, crypto_mac_verify_decrypt_prov, nomod_minus_one);
   1099 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_init, nomod_minus_one);
   1100 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_init_prov, nomod_minus_one);
   1101 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_update, nomod_minus_one);
   1102 	NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_final, nomod_minus_one);
   1103 	NO_UNLOAD_STUB(kcf, crypto_object_copy, nomod_minus_one);
   1104 	NO_UNLOAD_STUB(kcf, crypto_object_create, nomod_minus_one);
   1105 	NO_UNLOAD_STUB(kcf, crypto_object_destroy, nomod_minus_one);
   1106 	NO_UNLOAD_STUB(kcf, crypto_object_find_final, nomod_minus_one);
   1107 	NO_UNLOAD_STUB(kcf, crypto_object_find_init, nomod_minus_one);
   1108 	NO_UNLOAD_STUB(kcf, crypto_object_find, nomod_minus_one);
   1109 	NO_UNLOAD_STUB(kcf, crypto_object_get_attribute_value, nomod_minus_one);
   1110 	NO_UNLOAD_STUB(kcf, crypto_object_get_size, nomod_minus_one);
   1111 	NO_UNLOAD_STUB(kcf, crypto_object_set_attribute_value, nomod_minus_one);
   1112 	NO_UNLOAD_STUB(kcf, crypto_session_close, nomod_minus_one);
   1113 	NO_UNLOAD_STUB(kcf, crypto_session_login, nomod_minus_one);
   1114 	NO_UNLOAD_STUB(kcf, crypto_session_logout, nomod_minus_one);
   1115 	NO_UNLOAD_STUB(kcf, crypto_session_open, nomod_minus_one);
   1116 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac, nomod_minus_one);
   1117 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_prov, nomod_minus_one);
   1118 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_init, nomod_minus_one);
   1119 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_init_prov, nomod_minus_one);
   1120 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_update, nomod_minus_one);
   1121 	NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_final, nomod_minus_one);
   1122 	NO_UNLOAD_STUB(kcf, crypto_create_ctx_template, nomod_minus_one);
   1123 	NO_UNLOAD_STUB(kcf, crypto_destroy_ctx_template, nomod_minus_one);
   1124 	NO_UNLOAD_STUB(kcf, crypto_get_mech_list, nomod_minus_one);
   1125 	NO_UNLOAD_STUB(kcf, crypto_free_mech_list, nomod_minus_one);
   1126 	NO_UNLOAD_STUB(kcf, crypto_cancel_req, nomod_minus_one);
   1127 	NO_UNLOAD_STUB(kcf, crypto_cancel_ctx, nomod_minus_one);
   1128 	NO_UNLOAD_STUB(kcf, crypto_bufcall_alloc, nomod_minus_one);
   1129 	NO_UNLOAD_STUB(kcf, crypto_bufcall_free, nomod_minus_one);
   1130 	NO_UNLOAD_STUB(kcf, crypto_bufcall, nomod_minus_one);
   1131 	NO_UNLOAD_STUB(kcf, crypto_unbufcall, nomod_minus_one);
   1132 	NO_UNLOAD_STUB(kcf, crypto_notify_events, nomod_minus_one);
   1133 	NO_UNLOAD_STUB(kcf, crypto_unnotify_events, nomod_minus_one);
   1134 	NO_UNLOAD_STUB(kcf, crypto_get_provider, nomod_minus_one);
   1135 	NO_UNLOAD_STUB(kcf, crypto_get_provinfo, nomod_minus_one);
   1136 	NO_UNLOAD_STUB(kcf, crypto_release_provider, nomod_minus_one);
   1137 	NO_UNLOAD_STUB(kcf, crypto_sign, nomod_minus_one);
   1138 	NO_UNLOAD_STUB(kcf, crypto_sign_prov, nomod_minus_one);
   1139 	NO_UNLOAD_STUB(kcf, crypto_sign_init, nomod_minus_one);
   1140 	NO_UNLOAD_STUB(kcf, crypto_sign_init_prov, nomod_minus_one);
   1141 	NO_UNLOAD_STUB(kcf, crypto_sign_update, nomod_minus_one);
   1142 	NO_UNLOAD_STUB(kcf, crypto_sign_final, nomod_minus_one);
   1143 	NO_UNLOAD_STUB(kcf, crypto_sign_recover, nomod_minus_one);
   1144 	NO_UNLOAD_STUB(kcf, crypto_sign_recover_prov, nomod_minus_one);
   1145 	NO_UNLOAD_STUB(kcf, crypto_sign_recover_init_prov, nomod_minus_one);
   1146 	NO_UNLOAD_STUB(kcf, crypto_verify, nomod_minus_one);
   1147 	NO_UNLOAD_STUB(kcf, crypto_verify_prov, nomod_minus_one);
   1148 	NO_UNLOAD_STUB(kcf, crypto_verify_init, nomod_minus_one);
   1149 	NO_UNLOAD_STUB(kcf, crypto_verify_init_prov, nomod_minus_one);
   1150 	NO_UNLOAD_STUB(kcf, crypto_verify_update, nomod_minus_one);
   1151 	NO_UNLOAD_STUB(kcf, crypto_verify_final, nomod_minus_one);
   1152 	NO_UNLOAD_STUB(kcf, crypto_verify_recover, nomod_minus_one);
   1153 	NO_UNLOAD_STUB(kcf, crypto_verify_recover_prov, nomod_minus_one);
   1154 	NO_UNLOAD_STUB(kcf, crypto_verify_recover_init_prov, nomod_minus_one);
   1155 	NO_UNLOAD_STUB(kcf, random_add_entropy, nomod_minus_one);
   1156 	NO_UNLOAD_STUB(kcf, random_add_pseudo_entropy, nomod_minus_one);
   1157 	NO_UNLOAD_STUB(kcf, random_get_bytes, nomod_minus_one);
   1158 	NO_UNLOAD_STUB(kcf, random_get_pseudo_bytes, nomod_minus_one);
   1159 	END_MODULE(kcf);
   1160 #endif
   1161 
   1162 /*
   1163  * Stubs for sha1. A non-unloadable module.
   1164  */
   1165 #ifndef SHA1_MODULE
   1166 	MODULE(sha1,crypto);
   1167 	NO_UNLOAD_STUB(sha1, SHA1Init, nomod_void);
   1168 	NO_UNLOAD_STUB(sha1, SHA1Update, nomod_void);
   1169 	NO_UNLOAD_STUB(sha1, SHA1Final,	nomod_void);
   1170 	END_MODULE(sha1);
   1171 #endif
   1172 
   1173 /*
   1174  * The following stubs are used by the mac module.
   1175  * Since dld already depends on mac, these
   1176  * stubs are needed to avoid circular dependencies.
   1177  */
   1178 #ifndef	DLD_MODULE
   1179 	MODULE(dld,drv);
   1180 	STUB(dld, dld_init_ops, nomod_void);
   1181 	STUB(dld, dld_fini_ops, nomod_void);
   1182 	STUB(dld, dld_autopush, nomod_minus_one);
   1183 	STUB(dld, dld_devt_to_instance, nomod_minus_one);
   1184 	STUB(dld, dld_ioc_register, nomod_einval);
   1185 	STUB(dld, dld_ioc_unregister, nomod_void);
   1186 	END_MODULE(dld);
   1187 #endif
   1188 
   1189 /*
   1190  * The following stubs are used by the mac module.
   1191  * Since dls already depends on mac, these
   1192  * stubs are needed to avoid circular dependencies.
   1193  */
   1194 #ifndef	DLS_MODULE
   1195 	MODULE(dls,misc);
   1196 	STUB(dls, dls_devnet_mac, nomod_zero);
   1197 	STUB(dls, dls_devnet_hold_tmp, nomod_einval);
   1198 	STUB(dls, dls_devnet_rele_tmp, nomod_void);
   1199 	STUB(dls, dls_devnet_hold_link, nomod_einval);
   1200 	STUB(dls, dls_devnet_rele_link, nomod_void);
   1201 	STUB(dls, dls_devnet_prop_task_wait, nomod_void);
   1202 	STUB(dls, dls_mgmt_get_linkid, nomod_einval);
   1203 	STUB(dls, dls_devnet_macname2linkid, nomod_einval);
   1204 	STUB(dls, dls_mgmt_get_linkinfo, nomod_einval);
   1205 	END_MODULE(dls);
   1206 #endif
   1207 
   1208 #ifndef SOFTMAC_MODULE
   1209 	MODULE(softmac,drv);
   1210 	STUB(softmac, softmac_hold_device, nomod_einval);
   1211 	STUB(softmac, softmac_rele_device, nomod_void);
   1212 	STUB(softmac, softmac_recreate, nomod_void);
   1213 	END_MODULE(softmac);
   1214 #endif
   1215 
   1216 #ifndef IPTUN_MODULE
   1217 	MODULE(iptun,drv);
   1218 	STUB(iptun, iptun_create, nomod_einval);
   1219 	STUB(iptun, iptun_delete, nomod_einval);
   1220 	STUB(iptun, iptun_set_policy, nomod_einval);
   1221 	STUB(iptun, iptun_set_g_q, nomod_einval);
   1222 	STUB(iptun, iptun_clear_g_q, nomod_void);
   1223 	END_MODULE(iptun);
   1224 #endif
   1225 
   1226 /*
   1227  * Stubs for kssl, the kernel SSL proxy
   1228  */
   1229 #ifndef KSSL_MODULE
   1230 	MODULE(kssl,drv);
   1231 	NO_UNLOAD_STUB(kssl, kssl_check_proxy, nomod_zero);
   1232 	NO_UNLOAD_STUB(kssl, kssl_handle_mblk, nomod_zero);
   1233 	NO_UNLOAD_STUB(kssl, kssl_input, nomod_zero);
   1234 	NO_UNLOAD_STUB(kssl, kssl_build_record, nomod_zero);
   1235 	NO_UNLOAD_STUB(kssl, kssl_hold_ent, nomod_void);
   1236 	NO_UNLOAD_STUB(kssl, kssl_release_ent, nomod_void);
   1237 	NO_UNLOAD_STUB(kssl, kssl_find_fallback, nomod_zero);
   1238 	NO_UNLOAD_STUB(kssl, kssl_init_context, nomod_zero);
   1239 	NO_UNLOAD_STUB(kssl, kssl_hold_ctx, nomod_void);
   1240 	NO_UNLOAD_STUB(kssl, kssl_release_ctx, nomod_void);
   1241 	END_MODULE(kssl);
   1242 #endif
   1243 
   1244 /*
   1245  * Stubs for dcopy, for Intel IOAT KAPIs
   1246  */
   1247 #ifndef DCOPY_MODULE
   1248 	MODULE(dcopy,misc);
   1249 	NO_UNLOAD_STUB(dcopy, dcopy_query, nomod_minus_one);
   1250 	NO_UNLOAD_STUB(dcopy, dcopy_query_channel, nomod_minus_one);
   1251 	NO_UNLOAD_STUB(dcopy, dcopy_alloc, nomod_minus_one);
   1252 	NO_UNLOAD_STUB(dcopy, dcopy_free, nomod_minus_one);
   1253 	NO_UNLOAD_STUB(dcopy, dcopy_cmd_alloc, nomod_minus_one);
   1254 	NO_UNLOAD_STUB(dcopy, dcopy_cmd_free, nomod_void);
   1255 	NO_UNLOAD_STUB(dcopy, dcopy_cmd_post, nomod_minus_one);
   1256 	NO_UNLOAD_STUB(dcopy, dcopy_cmd_poll, nomod_minus_one);
   1257 	END_MODULE(dcopy);
   1258 #endif
   1259 
   1260 #ifndef IPNET_MODULE
   1261 	MODULE(ipnet,drv);
   1262 	STUB(ipnet, ipnet_if_getdev, nomod_zero);
   1263 	STUB(ipnet, ipnet_walk_if, nomod_zero);
   1264 	END_MODULE(ipnet);
   1265 #endif
   1266 
   1267 /*
   1268  * Stubs for kernel socket, for iscsi
   1269  */
   1270 #ifndef KSOCKET_MODULE
   1271 	MODULE(ksocket, misc);
   1272 	NO_UNLOAD_STUB(ksocket, ksocket_setsockopt, nomod_minus_one);
   1273 	NO_UNLOAD_STUB(ksocket, ksocket_getsockopt, nomod_minus_one);
   1274 	NO_UNLOAD_STUB(ksocket, ksocket_getpeername, nomod_minus_one);
   1275 	NO_UNLOAD_STUB(ksocket, ksocket_getsockname, nomod_minus_one);
   1276 	NO_UNLOAD_STUB(ksocket, ksocket_socket, nomod_minus_one);
   1277 	NO_UNLOAD_STUB(ksocket, ksocket_bind, nomod_minus_one);
   1278 	NO_UNLOAD_STUB(ksocket, ksocket_listen, nomod_minus_one);
   1279 	NO_UNLOAD_STUB(ksocket, ksocket_accept, nomod_minus_one);
   1280 	NO_UNLOAD_STUB(ksocket, ksocket_connect, nomod_minus_one);
   1281 	NO_UNLOAD_STUB(ksocket, ksocket_recv, nomod_minus_one);
   1282 	NO_UNLOAD_STUB(ksocket, ksocket_recvfrom, nomod_minus_one);
   1283 	NO_UNLOAD_STUB(ksocket, ksocket_recvmsg, nomod_minus_one);
   1284 	NO_UNLOAD_STUB(ksocket, ksocket_send, nomod_minus_one);
   1285 	NO_UNLOAD_STUB(ksocket, ksocket_sendto, nomod_minus_one);
   1286 	NO_UNLOAD_STUB(ksocket, ksocket_sendmsg, nomod_minus_one);
   1287 	NO_UNLOAD_STUB(ksocket, ksocket_ioctl, nomod_minus_one);
   1288 	NO_UNLOAD_STUB(ksocket, ksocket_setcallbacks, nomod_minus_one);
   1289 	NO_UNLOAD_STUB(ksocket, ksocket_hold, nomod_minus_one);
   1290 	NO_UNLOAD_STUB(ksocket, ksocket_rele, nomod_minus_one);
   1291 	NO_UNLOAD_STUB(ksocket, ksocket_shutdown, nomod_minus_one);
   1292 	NO_UNLOAD_STUB(ksocket, ksocket_close, nomod_minus_one);
   1293 	END_MODULE(ksocket);
   1294 #endif
   1295 
   1296 ! this is just a marker for the area of text that contains stubs
   1297 	.seg ".text"
   1298 	.global stubs_end
   1299 stubs_end:
   1300 	nop
   1301 
   1302 #endif	/* lint */
   1303