Print this page
    
OS-3735 modstubs MAXNARG is too low.
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/uts/intel/ia32/ml/modstubs.s
          +++ new/usr/src/uts/intel/ia32/ml/modstubs.s
   1    1  /*
   2    2   * CDDL HEADER START
   3    3   *
   4    4   * The contents of this file are subject to the terms of the
   5    5   * Common Development and Distribution License (the "License").
   6    6   * You may not use this file except in compliance with the License.
   7    7   *
   8    8   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9    9   * or http://www.opensolaris.org/os/licensing.
  10   10   * See the License for the specific language governing permissions
  11   11   * and limitations under the License.
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved.
  24   24   * Copyright (c) 2015, Joyent, Inc. All rights reserved.
  25   25   */
  26   26  
  27   27  #include <sys/asm_linkage.h>
  28   28  
  29   29  #if defined(__lint)
  30   30  
  31   31  char stubs_base[1], stubs_end[1];
  32   32  
  33   33  #else   /* __lint */
  34   34  
  35   35  #include "assym.h"
  36   36  
  37   37  /*
  38   38   * !!!!!!!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!!!!!!
  39   39   *
  40   40   *      For functions which are either STUBs or WSTUBs the actual function
  41   41   *      need to be called using 'call' instruction because of preamble and
  42   42   *      postamble (i.e mod_hold_stub and mod_release_stub) around the
  
    | 
      ↓ open down ↓ | 
    42 lines elided | 
    
      ↑ open up ↑ | 
  
  43   43   *      function call. Due to this we need to copy arguments for the
  44   44   *      real function. On Intel we can't tell how many arguments are there
  45   45   *      on the stack so we have to either copy everything between esp and
  46   46   *      ebp or copy only a fixed number (MAXNARG - defined here) for
  47   47   *      all the stub functions. Currently we are using MAXNARG (it is a kludge
  48   48   *      but worth it?!).
  49   49   *
  50   50   *      NOTE: Use NO_UNLOAD_STUBs if the module is NOT unloadable once it is
  51   51   *            loaded.
  52   52   */
  53      -#define MAXNARG 10
       53 +#define MAXNARG 12
  54   54  
  55   55  /*
  56   56   * WARNING: there is no check for forgetting to write END_MODULE,
  57   57   * and if you do, the kernel will most likely crash.  Be careful
  58   58   *
  59   59   * This file assumes that all of the contributions to the data segment
  60   60   * will be contiguous in the output file, even though they are separated
  61   61   * by pieces of text.  This is safe for all assemblers I know of now...
  62   62   */
  63   63  
  64   64  /*
  65   65   * This file uses ansi preprocessor features:
  66   66   *
  67   67   * 1.   #define mac(a) extra_ ## a     -->   mac(x) expands to extra_a
  68   68   * The old version of this is
  69   69   *      #define mac(a) extra_/.*.*./a
  70   70   * but this fails if the argument has spaces "mac ( x )"
  71   71   * (Ignore the dots above, I had to put them in to keep this a comment.)
  72   72   *
  73   73   * 2.   #define mac(a) #a             -->    mac(x) expands to "x"
  74   74   * The old version is
  75   75   *      #define mac(a) "a"
  76   76   *
  77   77   * For some reason, the 5.0 preprocessor isn't happy with the above usage.
  78   78   * For now, we're not using these ansi features.
  79   79   *
  80   80   * The reason is that "the 5.0 ANSI preprocessor" is built into the compiler
  81   81   * and is a tokenizing preprocessor. This means, when confronted by something
  82   82   * other than C token generation rules, strange things occur. In this case,
  83   83   * when confronted by an assembly file, it would turn the token ".globl" into
  84   84   * two tokens "." and "globl". For this reason, the traditional, non-ANSI
  85   85   * preprocessor is used on assembly files.
  86   86   *
  87   87   * It would be desirable to have a non-tokenizing cpp (accp?) to use for this.
  88   88   */
  89   89  
  90   90  /*
  91   91   * This file contains the stubs routines for modules which can be autoloaded.
  92   92   */
  93   93  
  94   94  #if defined(__amd64)
  95   95  
  96   96  /*
  97   97   * See the 'struct mod_modinfo' definition to see what this declaration
  98   98   * is trying to achieve here.
  99   99   */
 100  100  #define MODULE(module,namespace)        \
 101  101          .data;                          \
 102  102  module/**/_modname:                     \
 103  103          .string "namespace/module";     \
 104  104          SET_SIZE(module/**/_modname);   \
 105  105          .align  CPTRSIZE;               \
 106  106          .globl  module/**/_modinfo;     \
 107  107          .type   module/**/_modinfo, @object;    \
 108  108  module/**/_modinfo:                     \
 109  109          .quad   module/**/_modname;     \
 110  110          .quad   0       /* storage for modctl pointer */
 111  111  
 112  112          /* then mod_stub_info structures follow until a mods_func_adr is 0 */
 113  113  
 114  114  /* this puts a 0 where the next mods_func_adr would be */
 115  115  #define END_MODULE(module)              \
 116  116          .data;                          \
 117  117          .align  CPTRSIZE;               \
 118  118          .quad 0;                        \
 119  119          SET_SIZE(module/**/_modinfo)
 120  120  
 121  121  /*
 122  122   * The data section in the stub_common macro is the
 123  123   * mod_stub_info structure for the stub function
 124  124   */
 125  125  
 126  126  #define STUB_COMMON(module, fcnname, install_fcn, retfcn, weak)         \
 127  127          ENTRY(fcnname);                                                 \
 128  128          leaq    fcnname/**/_info(%rip), %rax;                           \
 129  129          cmpl    $0, MODS_FLAG(%rax);                    /* weak? */     \
 130  130          je      stubs_common_code;                      /* not weak */  \
 131  131          testb   $MODS_INSTALLED, MODS_FLAG(%rax);       /* installed? */ \
 132  132          jne     stubs_common_code;              /* yes, do the mod_hold */ \
 133  133          jmp     *MODS_RETFCN(%rax);             /* no, jump to retfcn */ \
 134  134          SET_SIZE(fcnname);                                              \
 135  135          .data;                                                          \
 136  136          .align   CPTRSIZE;                                              \
 137  137          .type   fcnname/**/_info, @object;                              \
 138  138  fcnname/**/_info:                                                       \
 139  139          .quad   install_fcn;            /* 0 */                         \
 140  140          .quad   module/**/_modinfo;     /* 0x8 */                       \
 141  141          .quad   fcnname;                /* 0x10 */                      \
 142  142          .quad   retfcn;                 /* 0x18 */                      \
 143  143          .long   weak;                   /* 0x20 */                      \
 144  144          SET_SIZE(fcnname/**/_info)
 145  145  
 146  146  #define STUB_UNLOADABLE(module, fcnname, install_fcn, retfcn, weak)     \
 147  147          ENTRY(fcnname);                                                 \
 148  148          leaq    fcnname/**/_info(%rip), %rax;                           \
 149  149          testb   $MODS_INSTALLED, MODS_FLAG(%rax); /* installed? */      \
 150  150          je      5f;                     /* no */                        \
 151  151          jmp     *(%rax);                /* yes, jump to install_fcn */  \
 152  152  5:      testb   $MODS_WEAK, MODS_FLAG(%rax);    /* weak? */             \
 153  153          je      stubs_common_code;      /* no, do mod load */           \
 154  154          jmp     *MODS_RETFCN(%rax);     /* yes, jump to retfcn */       \
 155  155          SET_SIZE(fcnname);                                              \
 156  156          .data;                                                          \
 157  157          .align  CPTRSIZE;                                               \
 158  158          .type   fcnname/**/_info, @object;                              \
 159  159  fcnname/**/_info:                                                       \
 160  160          .quad   install_fcn;            /* 0 */                         \
 161  161          .quad   module/**/_modinfo;     /* 0x8 */                       \
 162  162          .quad   fcnname;                /* 0x10 */                      \
 163  163          .quad   retfcn;                 /* 0x18 */                      \
 164  164          .long   weak;                   /* 0x20 */                      \
 165  165          SET_SIZE(fcnname/**/_info)
 166  166  
 167  167  /*
 168  168   * We branch here with the fcnname_info pointer in %rax
 169  169   */
 170  170          ENTRY_NP(stubs_common_code)
 171  171          .globl  mod_hold_stub
 172  172          .globl  mod_release_stub
 173  173          pushq   %rbp
 174  174          movq    %rsp, %rbp
 175  175          subq    $0x10, %rsp
 176  176          movq    %r15, (%rsp)            /* (caller saved) */
  
    | 
      ↓ open down ↓ | 
    113 lines elided | 
    
      ↑ open up ↑ | 
  
 177  177          movq    %rax, %r15              /* stash the fcnname_info pointer */
 178  178          /*
 179  179           * save incoming register arguments
 180  180           */
 181  181          pushq   %rdi
 182  182          pushq   %rsi
 183  183          pushq   %rdx
 184  184          pushq   %rcx
 185  185          pushq   %r8
 186  186          pushq   %r9
 187      -        /* (next 4 args, if any, are already on the stack above %rbp) */
      187 +        /* (next 6 args, if any, are already on the stack above %rbp) */
 188  188          movq    %r15, %rdi
 189  189          call    mod_hold_stub           /* mod_hold_stub(mod_stub_info *) */
 190  190          cmpl    $-1, %eax               /* error? */
 191  191          jne     .L1
 192  192          movq    0x18(%r15), %rax
 193  193          call    *%rax
 194  194          addq    $0x30, %rsp
 195  195          jmp     .L2
 196  196  .L1:
 197  197          /*
 198      -         * copy MAXNARG == 10 incoming arguments
      198 +         * copy MAXNARG == 12 incoming arguments
 199  199           */
 200  200          popq    %r9
 201  201          popq    %r8
 202  202          popq    %rcx
 203  203          popq    %rdx
 204  204          popq    %rsi
 205  205          popq    %rdi
 206  206          /*
 207  207           * stack:
 208  208           *      arg9            0x38(%rsp)
 209  209           *      arg8            0x30(%rsp)
 210  210           *      arg7            0x28(%rsp)
 211  211           *      arg6            0x20(%rsp)
  
    | 
      ↓ open down ↓ | 
    3 lines elided | 
    
      ↑ open up ↑ | 
  
 212  212           *      saved %rip      0x18(%rsp)
 213  213           *      saved %rbp      0x10(%rsp)
 214  214           *      <pad>           0x8(%rsp)
 215  215           *      saved %r15      0x0(%rsp)
 216  216           */
 217  217          movl    $MAXNARG - 6 + 3, %r11d
 218  218          pushq   (%rsp, %r11, 8)
 219  219          pushq   (%rsp, %r11, 8)
 220  220          pushq   (%rsp, %r11, 8)
 221  221          pushq   (%rsp, %r11, 8)
      222 +        pushq   (%rsp, %r11, 8)
      223 +        pushq   (%rsp, %r11, 8)
 222  224          call    *(%r15)                 /* call the stub fn(arg, ..) */
 223      -        addq    $0x20, %rsp             /* pop off last 4 args */
      225 +        addq    $0x30, %rsp             /* pop off last 6 args */
 224  226          pushq   %rax                    /* save any return values */
 225  227          pushq   %rdx
 226  228          movq    %r15, %rdi
 227  229          call    mod_release_stub        /* release hold on module */
 228  230          popq    %rdx                    /* restore return values */
 229  231          popq    %rax
 230  232  .L2:
 231  233          popq    %r15
 232  234          leave
 233  235          ret
 234  236          SET_SIZE(stubs_common_code)
 235  237  
 236  238  #elif defined(__i386)
 237  239  
 238  240  /*
 239  241   * See the 'struct mod_modinfo' definition to see what this declaration
 240  242   * is trying to achieve here.
 241  243   */
 242  244  #define MODULE(module,namespace)        \
 243  245          .data;                          \
 244  246  module/**/_modname:                     \
 245  247          .string "namespace/module";     \
 246  248          SET_SIZE(module/**/_modname);   \
 247  249          .align  CPTRSIZE;               \
 248  250          .globl  module/**/_modinfo;     \
 249  251          .type   module/**/_modinfo, @object;    \
 250  252  module/**/_modinfo:                     \
 251  253          .long   module/**/_modname;     \
 252  254          .long   0       /* storage for modctl pointer */
 253  255  
 254  256          /* then mod_stub_info structures follow until a mods_func_adr is 0 */
 255  257  
 256  258  /* this puts a 0 where the next mods_func_adr would be */
 257  259  #define END_MODULE(module)              \
 258  260          .data;                          \
 259  261          .align  CPTRSIZE;               \
 260  262          .long 0;                        \
 261  263          SET_SIZE(module/**/_modinfo)
 262  264  
 263  265  /*
 264  266   * The data section in the stub_common macro is the
 265  267   * mod_stub_info structure for the stub function
 266  268   */
 267  269  
 268  270  /*      
 269  271   * The flag MODS_INSTALLED is stored in the stub data and is used to
 270  272   * indicate if a module is installed and initialized.  This flag is used
 271  273   * instead of the mod_stub_info->mods_modinfo->mod_installed flag
 272  274   * to minimize the number of pointer de-references for each function
 273  275   * call (and also to avoid possible TLB misses which could be induced
 274  276   * by dereferencing these pointers.)
 275  277   */     
 276  278  
 277  279  #define STUB_COMMON(module, fcnname, install_fcn, retfcn, weak)         \
 278  280          ENTRY(fcnname);                                                 \
 279  281          leal    fcnname/**/_info, %eax;                                 \
 280  282          cmpl    $0, MODS_FLAG(%eax);    /* weak? */                     \
 281  283          je      stubs_common_code;      /* not weak */                  \
 282  284          testb   $MODS_INSTALLED, MODS_FLAG(%eax); /* installed? */      \
 283  285          jne     stubs_common_code;      /* yes, do the mod_hold */      \
 284  286          jmp     *MODS_RETFCN(%eax);     /* no, just jump to retfcn */   \
 285  287          SET_SIZE(fcnname);                                              \
 286  288          .data;                                                          \
 287  289          .align   CPTRSIZE;                                              \
 288  290          .type   fcnname/**/_info, @object;                              \
 289  291  fcnname/**/_info:                                                       \
 290  292          .long   install_fcn;                                            \
 291  293          .long   module/**/_modinfo;                                     \
 292  294          .long   fcnname;                                                \
 293  295          .long   retfcn;                                                 \
 294  296          .long   weak;                                                   \
 295  297          SET_SIZE(fcnname/**/_info)
 296  298          
 297  299  #define STUB_UNLOADABLE(module, fcnname, install_fcn, retfcn, weak)     \
 298  300          ENTRY(fcnname);                                                 \
 299  301          leal    fcnname/**/_info, %eax;                                 \
 300  302          testb   $MODS_INSTALLED, MODS_FLAG(%eax); /* installed? */      \
 301  303          je      5f;             /* no */                                \
 302  304          jmp     *(%eax);        /* yes, just jump to install_fcn */     \
 303  305  5:      testb   $MODS_WEAK, MODS_FLAG(%eax);    /* weak? */             \
 304  306          je      stubs_common_code;      /* no, do mod load */           \
 305  307          jmp     *MODS_RETFCN(%eax);     /* yes, just jump to retfcn */  \
 306  308          SET_SIZE(fcnname);                                              \
 307  309          .data;                                                          \
 308  310          .align  CPTRSIZE;                                               \
 309  311          .type   fcnname/**/_info, @object;                              \
 310  312  fcnname/**/_info:                                                       \
 311  313          .long   install_fcn;            /* 0 */                         \
 312  314          .long   module/**/_modinfo;     /* 0x4 */                       \
 313  315          .long   fcnname;                /* 0x8 */                       \
 314  316          .long   retfcn;                 /* 0xc */                       \
 315  317          .long   weak;                   /* 0x10 */                      \
 316  318          SET_SIZE(fcnname/**/_info)
 317  319  
 318  320  /*
 319  321   * We branch here with the fcnname_info pointer in %eax
 320  322   */
 321  323          ENTRY_NP(stubs_common_code)
 322  324          .globl  mod_hold_stub
 323  325          .globl  mod_release_stub
 324  326          pushl   %esi
 325  327          movl    %eax, %esi              / save the info pointer
 326  328          pushl   %eax
 327  329          call    mod_hold_stub           / mod_hold_stub(mod_stub_info *)
 328  330          popl    %ecx
 329  331          cmpl    $-1, %eax               / error?
 330  332          jne     .L1
  
    | 
      ↓ open down ↓ | 
    97 lines elided | 
    
      ↑ open up ↑ | 
  
 331  333          movl    MODS_RETFCN(%esi), %eax
 332  334          call    *%eax   
 333  335          popl    %esi                    / yes, return error (panic?)
 334  336          ret
 335  337  .L1:
 336  338          movl    $MAXNARG+1, %ecx
 337  339          / copy incoming arguments
 338  340          pushl   (%esp, %ecx, 4)         / push MAXNARG times
 339  341          pushl   (%esp, %ecx, 4)
 340  342          pushl   (%esp, %ecx, 4)
      343 +        pushl   (%esp, %ecx, 4)
      344 +        pushl   (%esp, %ecx, 4)
 341  345          pushl   (%esp, %ecx, 4)
 342  346          pushl   (%esp, %ecx, 4)
 343  347          pushl   (%esp, %ecx, 4)
 344  348          pushl   (%esp, %ecx, 4)
 345  349          pushl   (%esp, %ecx, 4)
 346  350          pushl   (%esp, %ecx, 4)
 347  351          pushl   (%esp, %ecx, 4)
 348  352          call    *(%esi)                 / call the stub function(arg1,arg2, ...)
 349  353          add     $_MUL(MAXNARG, 4), %esp / pop off MAXNARG arguments
 350  354          pushl   %eax                    / save any return values from the stub
 351  355          pushl   %edx
 352  356          pushl   %esi
 353  357          call    mod_release_stub        / release hold on module
 354  358          addl    $4, %esp
 355  359          popl    %edx                    / restore return values
 356  360          popl    %eax
 357  361  .L2:
 358  362          popl    %esi
 359  363          ret
 360  364          SET_SIZE(stubs_common_code)
 361  365  
 362  366  #endif  /* __i386 */
 363  367  
 364  368  #define STUB(module, fcnname, retfcn)   \
 365  369      STUB_COMMON(module, fcnname, mod_hold_stub, retfcn, 0)
 366  370  
 367  371  /*
 368  372   * "weak stub", don't load on account of this call
 369  373   */
 370  374  #define WSTUB(module, fcnname, retfcn)  \
 371  375      STUB_COMMON(module, fcnname, retfcn, retfcn, MODS_WEAK)
 372  376  
 373  377  /*
 374  378   * "non-unloadable stub", don't bother 'holding' module if it's already loaded
 375  379   * since the module cannot be unloaded.
 376  380   *
 377  381   * User *MUST* guarantee the module is not unloadable (no _fini routine).
 378  382   */
 379  383  #define NO_UNLOAD_STUB(module, fcnname, retfcn) \
 380  384      STUB_UNLOADABLE(module, fcnname,  retfcn, retfcn, MODS_NOUNLOAD)
 381  385  
 382  386  /*
 383  387   * "weak stub" for non-unloadable module, don't load on account of this call
 384  388   */
 385  389  #define NO_UNLOAD_WSTUB(module, fcnname, retfcn) \
 386  390      STUB_UNLOADABLE(module, fcnname, retfcn, retfcn, MODS_NOUNLOAD|MODS_WEAK)
 387  391  
 388  392  /*
 389  393   * this is just a marker for the beginning area of text that contains stubs
 390  394   */
 391  395          ENTRY_NP(stubs_base)
 392  396          nop
 393  397  
 394  398  /*
 395  399   * WARNING WARNING WARNING!!!!!!
 396  400   * 
 397  401   * On the MODULE macro you MUST NOT use any spaces!!! They are
 398  402   * significant to the preprocessor.  With ansi c there is a way around this
 399  403   * but for some reason (yet to be investigated) ansi didn't work for other
 400  404   * reasons!  
 401  405   *
 402  406   * When zero is used as the return function, the system will call
 403  407   * panic if the stub can't be resolved.
 404  408   */
 405  409  
 406  410  /*
 407  411   * Stubs for devfs. A non-unloadable module.
 408  412   */
 409  413  
 410  414  #ifndef DEVFS_MODULE
 411  415          MODULE(devfs,fs);
 412  416          NO_UNLOAD_STUB(devfs, devfs_clean,              nomod_minus_one);
 413  417          NO_UNLOAD_STUB(devfs, devfs_lookupname,         nomod_minus_one);
 414  418          NO_UNLOAD_STUB(devfs, devfs_walk,               nomod_minus_one);
 415  419          NO_UNLOAD_STUB(devfs, devfs_devpolicy,          nomod_minus_one);
 416  420          NO_UNLOAD_STUB(devfs, devfs_reset_perm,         nomod_minus_one);
 417  421          NO_UNLOAD_STUB(devfs, devfs_remdrv_cleanup,     nomod_minus_one);
 418  422          END_MODULE(devfs);
 419  423  #endif
 420  424  
 421  425  #ifndef DEV_MODULE
 422  426          MODULE(dev,fs);
 423  427          NO_UNLOAD_STUB(dev, sdev_modctl_readdir,        nomod_minus_one);
 424  428          NO_UNLOAD_STUB(dev, sdev_modctl_readdir_free,   nomod_minus_one);
 425  429          NO_UNLOAD_STUB(dev, devname_filename_register,  nomod_minus_one);
 426  430          NO_UNLOAD_STUB(dev, sdev_modctl_devexists,      nomod_minus_one);
 427  431          NO_UNLOAD_STUB(dev, devname_profile_update,     nomod_minus_one);
 428  432          NO_UNLOAD_STUB(dev, sdev_devstate_change,       nomod_minus_one);
 429  433          NO_UNLOAD_STUB(dev, devvt_getvnodeops,          nomod_minus_one);
 430  434          NO_UNLOAD_STUB(dev, devpts_getvnodeops,         nomod_zero);
 431  435          END_MODULE(dev);
 432  436  #endif
 433  437  
 434  438  /*
 435  439   * Stubs for specfs. A non-unloadable module.
 436  440   */
 437  441  
 438  442  #ifndef SPEC_MODULE
 439  443          MODULE(specfs,fs);
 440  444          NO_UNLOAD_STUB(specfs, common_specvp,           nomod_zero);
 441  445          NO_UNLOAD_STUB(specfs, makectty,                nomod_zero);
 442  446          NO_UNLOAD_STUB(specfs, makespecvp,              nomod_zero);
 443  447          NO_UNLOAD_STUB(specfs, smark,                   nomod_zero);
 444  448          NO_UNLOAD_STUB(specfs, spec_segmap,             nomod_einval);
 445  449          NO_UNLOAD_STUB(specfs, specfind,                nomod_zero);
 446  450          NO_UNLOAD_STUB(specfs, specvp,                  nomod_zero);
 447  451          NO_UNLOAD_STUB(specfs, devi_stillreferenced,    nomod_zero);
 448  452          NO_UNLOAD_STUB(specfs, spec_getvnodeops,        nomod_zero);
 449  453          NO_UNLOAD_STUB(specfs, spec_char_map,           nomod_zero);
 450  454          NO_UNLOAD_STUB(specfs, specvp_devfs,            nomod_zero);
 451  455          NO_UNLOAD_STUB(specfs, spec_assoc_vp_with_devi, nomod_void);
 452  456          NO_UNLOAD_STUB(specfs, spec_hold_devi_by_vp,    nomod_zero);
 453  457          NO_UNLOAD_STUB(specfs, spec_snode_walk,         nomod_void);
 454  458          NO_UNLOAD_STUB(specfs, spec_devi_open_count,    nomod_minus_one);
 455  459          NO_UNLOAD_STUB(specfs, spec_is_clone,           nomod_zero);
 456  460          NO_UNLOAD_STUB(specfs, spec_is_selfclone,       nomod_zero);
 457  461          NO_UNLOAD_STUB(specfs, spec_fence_snode,        nomod_minus_one);
 458  462          NO_UNLOAD_STUB(specfs, spec_unfence_snode,      nomod_minus_one);
 459  463          END_MODULE(specfs);
 460  464  #endif
 461  465  
 462  466  
 463  467  /*
 464  468   * Stubs for sockfs. A non-unloadable module.
 465  469   */
 466  470  #ifndef SOCK_MODULE
 467  471          MODULE(sockfs,fs);
 468  472          NO_UNLOAD_STUB(sockfs, so_socket,       nomod_zero);
 469  473          NO_UNLOAD_STUB(sockfs, so_socketpair,   nomod_zero);
 470  474          NO_UNLOAD_STUB(sockfs, bind,            nomod_zero);
 471  475          NO_UNLOAD_STUB(sockfs, listen,          nomod_zero);
 472  476          NO_UNLOAD_STUB(sockfs, accept,          nomod_zero);
 473  477          NO_UNLOAD_STUB(sockfs, connect,         nomod_zero);
 474  478          NO_UNLOAD_STUB(sockfs, shutdown,        nomod_zero);
 475  479          NO_UNLOAD_STUB(sockfs, recv,            nomod_zero);
 476  480          NO_UNLOAD_STUB(sockfs, recvfrom,        nomod_zero);
 477  481          NO_UNLOAD_STUB(sockfs, recvmsg,         nomod_zero);
 478  482          NO_UNLOAD_STUB(sockfs, send,            nomod_zero);
 479  483          NO_UNLOAD_STUB(sockfs, sendmsg,         nomod_zero);
 480  484          NO_UNLOAD_STUB(sockfs, sendto,          nomod_zero);
 481  485  #ifdef _SYSCALL32_IMPL
 482  486          NO_UNLOAD_STUB(sockfs, recv32,          nomod_zero);
 483  487          NO_UNLOAD_STUB(sockfs, recvfrom32,      nomod_zero);
 484  488          NO_UNLOAD_STUB(sockfs, send32,          nomod_zero);
 485  489          NO_UNLOAD_STUB(sockfs, sendto32,        nomod_zero);
 486  490  #endif  /* _SYSCALL32_IMPL */
 487  491          NO_UNLOAD_STUB(sockfs, getpeername,     nomod_zero);
 488  492          NO_UNLOAD_STUB(sockfs, getsockname,     nomod_zero);
 489  493          NO_UNLOAD_STUB(sockfs, getsockopt,      nomod_zero);
 490  494          NO_UNLOAD_STUB(sockfs, setsockopt,      nomod_zero);
 491  495          NO_UNLOAD_STUB(sockfs, sockconfig,      nomod_zero);
 492  496          NO_UNLOAD_STUB(sockfs, sock_getmsg,     nomod_zero);
 493  497          NO_UNLOAD_STUB(sockfs, sock_putmsg,     nomod_zero);
 494  498          NO_UNLOAD_STUB(sockfs, sosendfile64,    nomod_zero);
 495  499          NO_UNLOAD_STUB(sockfs, snf_segmap,      nomod_einval);
 496  500          NO_UNLOAD_STUB(sockfs, sock_getfasync,  nomod_zero);
 497  501          NO_UNLOAD_STUB(sockfs, nl7c_sendfilev,  nomod_zero);
 498  502          NO_UNLOAD_STUB(sockfs, sotpi_sototpi,  nomod_zero);
 499  503          NO_UNLOAD_STUB(sockfs, socket_sendmblk,  nomod_zero);
 500  504          NO_UNLOAD_STUB(sockfs, socket_setsockopt,  nomod_zero);
 501  505          END_MODULE(sockfs);
 502  506  #endif
 503  507  
 504  508  /*
 505  509   * IPsec stubs.
 506  510   */
 507  511  
 508  512  #ifndef IPSECAH_MODULE
 509  513          MODULE(ipsecah,drv);
 510  514          WSTUB(ipsecah,  ipsec_construct_inverse_acquire,        nomod_zero);
 511  515          WSTUB(ipsecah,  sadb_acquire,           nomod_zero);
 512  516          WSTUB(ipsecah,  ipsecah_algs_changed,   nomod_zero);
 513  517          WSTUB(ipsecah,  sadb_alg_update,        nomod_zero);
 514  518          WSTUB(ipsecah,  sadb_unlinkassoc,       nomod_zero);
 515  519          WSTUB(ipsecah,  sadb_insertassoc,       nomod_zero);
 516  520          WSTUB(ipsecah,  ipsecah_in_assocfailure,        nomod_zero);
 517  521          WSTUB(ipsecah,  sadb_set_lpkt,          nomod_zero);
 518  522          WSTUB(ipsecah,  ipsecah_icmp_error,     nomod_zero);
 519  523          END_MODULE(ipsecah);
 520  524  #endif
 521  525          
 522  526  #ifndef IPSECESP_MODULE
 523  527          MODULE(ipsecesp,drv);
 524  528          WSTUB(ipsecesp, ipsecesp_fill_defs,     nomod_zero);
 525  529          WSTUB(ipsecesp, ipsecesp_algs_changed,  nomod_zero);
 526  530          WSTUB(ipsecesp, ipsecesp_in_assocfailure,       nomod_zero);
 527  531          WSTUB(ipsecesp, ipsecesp_init_funcs,    nomod_zero);
 528  532          WSTUB(ipsecesp, ipsecesp_icmp_error,    nomod_zero);
 529  533          WSTUB(ipsecesp, ipsecesp_send_keepalive,        nomod_zero);
 530  534          END_MODULE(ipsecesp);
 531  535  #endif
 532  536          
 533  537  #ifndef KEYSOCK_MODULE
 534  538          MODULE(keysock, drv);
 535  539          WSTUB(keysock,  keysock_plumb_ipsec,    nomod_zero);
 536  540          WSTUB(keysock,  keysock_extended_reg,   nomod_zero);
 537  541          WSTUB(keysock,  keysock_next_seq,       nomod_zero);
 538  542          END_MODULE(keysock);
 539  543  #endif
 540  544  
 541  545  #ifndef SPDSOCK_MODULE
 542  546          MODULE(spdsock,drv);
 543  547          WSTUB(spdsock,  spdsock_update_pending_algs,    nomod_zero);
 544  548          END_MODULE(spdsock);
 545  549  #endif
 546  550  
 547  551  /*
 548  552   * Stubs for nfs common code.
 549  553   * XXX nfs_getvnodeops should go away with removal of kludge in vnode.c
 550  554   */
 551  555  #ifndef NFS_MODULE
 552  556          MODULE(nfs,fs);
 553  557          WSTUB(nfs,      nfs_getvnodeops,        nomod_zero);
 554  558          WSTUB(nfs,      nfs_perror,             nomod_zero);
 555  559          WSTUB(nfs,      nfs_cmn_err,            nomod_zero);
 556  560          WSTUB(nfs,      clcleanup_zone,         nomod_zero);
 557  561          WSTUB(nfs,      clcleanup4_zone,        nomod_zero);
 558  562          END_MODULE(nfs);
 559  563  #endif
 560  564  
 561  565  
 562  566  /*
 563  567   * Stubs for nfs_dlboot (diskless booting).
 564  568   */
 565  569  #ifndef NFS_DLBOOT_MODULE
 566  570          MODULE(nfs_dlboot,misc);
 567  571          STUB(nfs_dlboot,        mount_root,     nomod_minus_one);
 568  572          STUB(nfs_dlboot,        dhcpinit,       nomod_minus_one);
 569  573          END_MODULE(nfs_dlboot);
 570  574  #endif
 571  575  
 572  576  /*
 573  577   * Stubs for nfs server-only code.
 574  578   */
 575  579  #ifndef NFSSRV_MODULE
 576  580          MODULE(nfssrv,misc);
 577  581          STUB(nfssrv,            exportfs,       nomod_minus_one);
 578  582          STUB(nfssrv,            nfs_getfh,      nomod_minus_one);
 579  583          STUB(nfssrv,            nfsl_flush,     nomod_minus_one);
 580  584          STUB(nfssrv,            rfs4_check_delegated, nomod_zero);
 581  585          STUB(nfssrv,            mountd_args,    nomod_minus_one);
 582  586          NO_UNLOAD_STUB(nfssrv,  rdma_start,     nomod_zero);
 583  587          NO_UNLOAD_STUB(nfssrv,  nfs_svc,        nomod_zero);
 584  588          END_MODULE(nfssrv);
 585  589  #endif
 586  590  
 587  591  /*
 588  592   * Stubs for kernel lock manager.
 589  593   */
 590  594  #ifndef KLM_MODULE
 591  595          MODULE(klmmod,misc);
 592  596          NO_UNLOAD_STUB(klmmod, lm_svc,          nomod_zero);
 593  597          NO_UNLOAD_STUB(klmmod, lm_shutdown,     nomod_zero);
 594  598          NO_UNLOAD_STUB(klmmod, lm_unexport,     nomod_zero);
 595  599          NO_UNLOAD_STUB(klmmod, lm_cprresume,    nomod_zero);
 596  600          NO_UNLOAD_STUB(klmmod, lm_cprsuspend,   nomod_zero); 
 597  601          NO_UNLOAD_STUB(klmmod, lm_safelock, nomod_zero);
 598  602          NO_UNLOAD_STUB(klmmod, lm_safemap, nomod_zero);
 599  603          NO_UNLOAD_STUB(klmmod, lm_has_sleep, nomod_zero);
 600  604          NO_UNLOAD_STUB(klmmod, lm_free_config, nomod_zero);
 601  605          NO_UNLOAD_STUB(klmmod, lm_vp_active, nomod_zero);
 602  606          NO_UNLOAD_STUB(klmmod, lm_get_sysid, nomod_zero);
 603  607          NO_UNLOAD_STUB(klmmod, lm_rel_sysid, nomod_zero);
 604  608          NO_UNLOAD_STUB(klmmod, lm_alloc_sysidt, nomod_minus_one); 
 605  609          NO_UNLOAD_STUB(klmmod, lm_free_sysidt, nomod_zero); 
 606  610          NO_UNLOAD_STUB(klmmod, lm_sysidt, nomod_minus_one);
 607  611          END_MODULE(klmmod);
 608  612  #endif
 609  613  
 610  614  #ifndef KLMOPS_MODULE
 611  615          MODULE(klmops,misc);
 612  616          NO_UNLOAD_STUB(klmops, lm_frlock,       nomod_zero);
 613  617          NO_UNLOAD_STUB(klmops, lm4_frlock,      nomod_zero);
 614  618          NO_UNLOAD_STUB(klmops, lm_shrlock,      nomod_zero);
 615  619          NO_UNLOAD_STUB(klmops, lm4_shrlock,     nomod_zero);
 616  620          NO_UNLOAD_STUB(klmops, lm_nlm_dispatch, nomod_zero);
 617  621          NO_UNLOAD_STUB(klmops, lm_nlm4_dispatch,        nomod_zero);
 618  622          NO_UNLOAD_STUB(klmops, lm_nlm_reclaim,  nomod_zero);
 619  623          NO_UNLOAD_STUB(klmops, lm_nlm4_reclaim, nomod_zero);
 620  624          NO_UNLOAD_STUB(klmops, lm_register_lock_locally, nomod_zero);
 621  625          END_MODULE(klmops);
 622  626  #endif
 623  627  
 624  628  /*
 625  629   * Stubs for kernel TLI module
 626  630   *   XXX currently we never allow this to unload
 627  631   */
 628  632  #ifndef TLI_MODULE
 629  633          MODULE(tlimod,misc);
 630  634          NO_UNLOAD_STUB(tlimod,  t_kopen,                nomod_minus_one);
 631  635          NO_UNLOAD_STUB(tlimod,  t_kunbind,              nomod_zero);
 632  636          NO_UNLOAD_STUB(tlimod,  t_kadvise,              nomod_zero);
 633  637          NO_UNLOAD_STUB(tlimod,  t_krcvudata,            nomod_zero);
 634  638          NO_UNLOAD_STUB(tlimod,  t_ksndudata,            nomod_zero);
 635  639          NO_UNLOAD_STUB(tlimod,  t_kalloc,               nomod_zero);
 636  640          NO_UNLOAD_STUB(tlimod,  t_kbind,                nomod_zero);
 637  641          NO_UNLOAD_STUB(tlimod,  t_kclose,               nomod_zero);
 638  642          NO_UNLOAD_STUB(tlimod,  t_kspoll,               nomod_zero);
 639  643          NO_UNLOAD_STUB(tlimod,  t_kfree,                nomod_zero);
 640  644          END_MODULE(tlimod);
 641  645  #endif
 642  646  
 643  647  /*
 644  648   * Stubs for kernel RPC module
 645  649   *   XXX currently we never allow this to unload
 646  650   */
 647  651  #ifndef RPC_MODULE
 648  652          MODULE(rpcmod,strmod);
 649  653          NO_UNLOAD_STUB(rpcmod,  clnt_tli_kcreate,       nomod_minus_one);
 650  654          NO_UNLOAD_STUB(rpcmod,  svc_tli_kcreate,        nomod_minus_one);
 651  655          NO_UNLOAD_STUB(rpcmod,  bindresvport,           nomod_minus_one);
 652  656          NO_UNLOAD_STUB(rpcmod, rdma_register_mod,       nomod_minus_one);
 653  657          NO_UNLOAD_STUB(rpcmod, rdma_unregister_mod,     nomod_minus_one);
 654  658          NO_UNLOAD_STUB(rpcmod, svc_queuereq,            nomod_minus_one);
 655  659          NO_UNLOAD_STUB(rpcmod, clist_add,               nomod_minus_one);
 656  660          END_MODULE(rpcmod);
 657  661  #endif
 658  662  
 659  663  /*
 660  664   * Stubs for des
 661  665   */
 662  666  #ifndef DES_MODULE
 663  667          MODULE(des,misc);
 664  668          STUB(des, cbc_crypt,            nomod_zero);
 665  669          STUB(des, ecb_crypt,            nomod_zero);
 666  670          STUB(des, _des_crypt,           nomod_zero);
 667  671          END_MODULE(des);
 668  672  #endif
 669  673  
 670  674  /*
 671  675   * Stubs for procfs. A non-unloadable module.
 672  676   */
 673  677  #ifndef PROC_MODULE
 674  678          MODULE(procfs,fs);
 675  679          NO_UNLOAD_STUB(procfs, prfree,          nomod_zero);
 676  680          NO_UNLOAD_STUB(procfs, prexit,          nomod_zero);
 677  681          NO_UNLOAD_STUB(procfs, prlwpfree,       nomod_zero);
 678  682          NO_UNLOAD_STUB(procfs, prlwpexit,       nomod_zero);
 679  683          NO_UNLOAD_STUB(procfs, prinvalidate,    nomod_zero);
 680  684          NO_UNLOAD_STUB(procfs, prnsegs,         nomod_zero);
 681  685          NO_UNLOAD_STUB(procfs, prgetcred,       nomod_zero);
 682  686          NO_UNLOAD_STUB(procfs, prgetpriv,       nomod_zero);
 683  687          NO_UNLOAD_STUB(procfs, prgetprivsize,   nomod_zero);
 684  688          NO_UNLOAD_STUB(procfs, prgetstatus,     nomod_zero);
 685  689          NO_UNLOAD_STUB(procfs, prgetlwpstatus,  nomod_zero);
 686  690          NO_UNLOAD_STUB(procfs, prgetpsinfo,     nomod_zero);
 687  691          NO_UNLOAD_STUB(procfs, prgetlwpsinfo,   nomod_zero);
 688  692          NO_UNLOAD_STUB(procfs, oprgetstatus,    nomod_zero);
 689  693          NO_UNLOAD_STUB(procfs, oprgetpsinfo,    nomod_zero);
 690  694  #ifdef _SYSCALL32_IMPL
 691  695          NO_UNLOAD_STUB(procfs, prgetstatus32,   nomod_zero);
 692  696          NO_UNLOAD_STUB(procfs, prgetlwpstatus32, nomod_zero);
 693  697          NO_UNLOAD_STUB(procfs, prgetpsinfo32,   nomod_zero);
 694  698          NO_UNLOAD_STUB(procfs, prgetlwpsinfo32, nomod_zero);
 695  699          NO_UNLOAD_STUB(procfs, oprgetstatus32,  nomod_zero);
 696  700          NO_UNLOAD_STUB(procfs, oprgetpsinfo32,  nomod_zero);
 697  701          NO_UNLOAD_STUB(procfs, psinfo_kto32,    nomod_zero);
 698  702          NO_UNLOAD_STUB(procfs, lwpsinfo_kto32,  nomod_zero);
 699  703  #endif  /* _SYSCALL32_IMPL */
 700  704          NO_UNLOAD_STUB(procfs, prnotify,        nomod_zero);
 701  705          NO_UNLOAD_STUB(procfs, prexecstart,     nomod_zero);
 702  706          NO_UNLOAD_STUB(procfs, prexecend,       nomod_zero);
 703  707          NO_UNLOAD_STUB(procfs, prrelvm,         nomod_zero);
 704  708          NO_UNLOAD_STUB(procfs, prbarrier,       nomod_zero);
 705  709          NO_UNLOAD_STUB(procfs, estimate_msacct, nomod_zero);
 706  710          NO_UNLOAD_STUB(procfs, pr_getprot,      nomod_zero);
 707  711          NO_UNLOAD_STUB(procfs, pr_getprot_done, nomod_zero);
 708  712          NO_UNLOAD_STUB(procfs, pr_getsegsize,   nomod_zero);
 709  713          NO_UNLOAD_STUB(procfs, pr_isobject,     nomod_zero);
 710  714          NO_UNLOAD_STUB(procfs, pr_isself,       nomod_zero);
 711  715          NO_UNLOAD_STUB(procfs, pr_allstopped,   nomod_zero);
 712  716          NO_UNLOAD_STUB(procfs, pr_free_watched_pages, nomod_zero);
 713  717          END_MODULE(procfs);
 714  718  #endif
 715  719  
 716  720  /*
 717  721   * Stubs for fifofs
 718  722   */
 719  723  #ifndef FIFO_MODULE
 720  724          MODULE(fifofs,fs);
 721  725          STUB(fifofs, fifovp,            0);
 722  726          STUB(fifofs, fifo_getinfo,      0);
 723  727          STUB(fifofs, fifo_vfastoff,     0);
 724  728          END_MODULE(fifofs);
 725  729  #endif
 726  730  
 727  731  /*
 728  732   * Stubs for ufs
 729  733   *
 730  734   * This is needed to support the old quotactl system call.
 731  735   * When the old sysent stuff goes away, this will need to be revisited.
 732  736   */
 733  737  #ifndef UFS_MODULE
 734  738          MODULE(ufs,fs);
 735  739          STUB(ufs, quotactl, nomod_minus_one);
 736  740          END_MODULE(ufs);
 737  741  #endif
 738  742  
 739  743  /*
 740  744   * Stubs for zfs
 741  745   */
 742  746  #ifndef ZFS_MODULE
 743  747          MODULE(zfs,fs);
 744  748          STUB(zfs, dsl_prop_get, nomod_minus_one);
 745  749          STUB(zfs, spa_boot_init, nomod_minus_one);
 746  750          STUB(zfs, zfs_prop_to_name, nomod_zero);
 747  751          END_MODULE(zfs);
 748  752  #endif
 749  753  
 750  754  /*
 751  755   * Stubs for dcfs
 752  756   */
 753  757  #ifndef DCFS_MODULE
 754  758          MODULE(dcfs,fs);
 755  759          STUB(dcfs, decompvp, 0);
 756  760          END_MODULE(dcfs);
 757  761  #endif
 758  762  
 759  763  /*
 760  764   * Stubs for namefs
 761  765   */
 762  766  #ifndef NAMEFS_MODULE
 763  767          MODULE(namefs,fs);
 764  768          STUB(namefs, nm_unmountall,     0);
 765  769          END_MODULE(namefs);
 766  770  #endif
 767  771  
 768  772  /*
 769  773   * Stubs for sysdc
 770  774   */
 771  775  #ifndef SDC_MODULE
 772  776          MODULE(SDC,sched);
 773  777          NO_UNLOAD_STUB(SDC, sysdc_thread_enter,         nomod_zero);
 774  778          END_MODULE(SDC);
 775  779  #endif
 776  780  
 777  781  /*
 778  782   * Stubs for ts_dptbl
 779  783   */
 780  784  #ifndef TS_DPTBL_MODULE
 781  785          MODULE(TS_DPTBL,sched);
 782  786          STUB(TS_DPTBL, ts_getdptbl,             0);
 783  787          STUB(TS_DPTBL, ts_getkmdpris,           0);
 784  788          STUB(TS_DPTBL, ts_getmaxumdpri, 0);
 785  789          END_MODULE(TS_DPTBL);
 786  790  #endif
 787  791  
 788  792  /*
 789  793   * Stubs for rt_dptbl
 790  794   */
 791  795  #ifndef RT_DPTBL_MODULE
 792  796          MODULE(RT_DPTBL,sched);
 793  797          STUB(RT_DPTBL, rt_getdptbl,             0);
 794  798          END_MODULE(RT_DPTBL);
 795  799  #endif
 796  800  
 797  801  /*
 798  802   * Stubs for ia_dptbl
 799  803   */
 800  804  #ifndef IA_DPTBL_MODULE
 801  805          MODULE(IA_DPTBL,sched);
 802  806          STUB(IA_DPTBL, ia_getdptbl,             nomod_zero);
 803  807          STUB(IA_DPTBL, ia_getkmdpris,           nomod_zero);
 804  808          STUB(IA_DPTBL, ia_getmaxumdpri, nomod_zero);
 805  809          END_MODULE(IA_DPTBL);
 806  810  #endif
 807  811  
 808  812  /*
 809  813   * Stubs for FSS scheduler
 810  814   */
 811  815  #ifndef FSS_MODULE
 812  816          MODULE(FSS,sched);
 813  817          WSTUB(FSS, fss_allocbuf,                nomod_zero);
 814  818          WSTUB(FSS, fss_freebuf,                 nomod_zero);
 815  819          WSTUB(FSS, fss_changeproj,              nomod_zero);
 816  820          WSTUB(FSS, fss_changepset,              nomod_zero);
 817  821          END_MODULE(FSS);
 818  822  #endif
 819  823  
 820  824  /*
 821  825   * Stubs for fx_dptbl
 822  826   */
 823  827  #ifndef FX_DPTBL_MODULE
 824  828          MODULE(FX_DPTBL,sched);
 825  829          STUB(FX_DPTBL, fx_getdptbl,             0);
 826  830          STUB(FX_DPTBL, fx_getmaxumdpri,         0);
 827  831          END_MODULE(FX_DPTBL);
 828  832  #endif
 829  833  
 830  834  /*
 831  835   * Stubs for bootdev
 832  836   */
 833  837  #ifndef BOOTDEV_MODULE
 834  838          MODULE(bootdev,misc);
 835  839          STUB(bootdev, i_promname_to_devname, 0);
 836  840          STUB(bootdev, i_convert_boot_device_name, 0);
 837  841          END_MODULE(bootdev);
 838  842  #endif
 839  843  
 840  844  /*
 841  845   * stubs for strplumb...
 842  846   */
 843  847  #ifndef STRPLUMB_MODULE
 844  848          MODULE(strplumb,misc);
 845  849          STUB(strplumb, strplumb,     0);
 846  850          STUB(strplumb, strplumb_load, 0);
 847  851          STUB(strplumb, strplumb_get_netdev_path, 0);
 848  852          END_MODULE(strplumb);
 849  853  #endif
 850  854  
 851  855  /*
 852  856   * Stubs for console configuration module
 853  857   */
 854  858  #ifndef CONSCONFIG_MODULE
 855  859          MODULE(consconfig,misc);
 856  860          STUB(consconfig, consconfig,    0);
 857  861          STUB(consconfig, consconfig_get_usb_kb_path,    0);
 858  862          STUB(consconfig, consconfig_get_usb_ms_path,    0);
 859  863          STUB(consconfig, consconfig_get_plat_fbpath,    0);
 860  864          STUB(consconfig, consconfig_console_is_ready,   0);
 861  865          END_MODULE(consconfig);
 862  866  #endif
 863  867  
 864  868  /* 
 865  869   * Stubs for accounting.
 866  870   */
 867  871  #ifndef SYSACCT_MODULE
 868  872          MODULE(sysacct,sys);
 869  873          WSTUB(sysacct, acct,            nomod_zero);
 870  874          WSTUB(sysacct, acct_fs_in_use,  nomod_zero);
 871  875          END_MODULE(sysacct);
 872  876  #endif
 873  877  
 874  878  /*
 875  879   * Stubs for semaphore routines. sem.c
 876  880   */
 877  881  #ifndef SEMSYS_MODULE
 878  882          MODULE(semsys,sys);
 879  883          WSTUB(semsys, semexit,          nomod_zero);
 880  884          END_MODULE(semsys);
 881  885  #endif
 882  886  
 883  887  /*
 884  888   * Stubs for shmem routines. shm.c
 885  889   */
 886  890  #ifndef SHMSYS_MODULE
 887  891          MODULE(shmsys,sys);
 888  892          WSTUB(shmsys, shmexit,          nomod_zero);
 889  893          WSTUB(shmsys, shmfork,          nomod_zero);
 890  894          WSTUB(shmsys, shmgetid,         nomod_minus_one);
 891  895          END_MODULE(shmsys);
 892  896  #endif
 893  897  
 894  898  /*
 895  899   * Stubs for doors
 896  900   */
 897  901  #ifndef DOOR_MODULE
 898  902          MODULE(doorfs,sys);
 899  903          WSTUB(doorfs, door_slam,                        nomod_zero);
 900  904          WSTUB(doorfs, door_exit,                        nomod_zero);
 901  905          WSTUB(doorfs, door_revoke_all,                  nomod_zero);
 902  906          WSTUB(doorfs, door_fork,                        nomod_zero);
 903  907          NO_UNLOAD_STUB(doorfs, door_upcall,             nomod_einval);
 904  908          NO_UNLOAD_STUB(doorfs, door_ki_create,          nomod_einval);
 905  909          NO_UNLOAD_STUB(doorfs, door_ki_open,            nomod_einval);
 906  910          NO_UNLOAD_STUB(doorfs, door_ki_lookup,          nomod_zero);
 907  911          WSTUB(doorfs, door_ki_upcall,                   nomod_einval);
 908  912          WSTUB(doorfs, door_ki_upcall_limited,           nomod_einval);
 909  913          WSTUB(doorfs, door_ki_hold,                     nomod_zero);
 910  914          WSTUB(doorfs, door_ki_rele,                     nomod_zero);
 911  915          WSTUB(doorfs, door_ki_info,                     nomod_einval);
 912  916          END_MODULE(doorfs);
 913  917  #endif
 914  918  
 915  919  /*
 916  920   * Stubs for MD5
 917  921   */
 918  922  #ifndef MD5_MODULE
 919  923          MODULE(md5,misc);
 920  924          WSTUB(md5, MD5Init,             nomod_zero);
 921  925          WSTUB(md5, MD5Update,           nomod_zero);
 922  926          WSTUB(md5, MD5Final,            nomod_zero);
 923  927          END_MODULE(md5);
 924  928  #endif
 925  929  
 926  930  /*
 927  931   * Stubs for idmap
 928  932   */
 929  933  #ifndef IDMAP_MODULE
 930  934          MODULE(idmap,misc);
 931  935          STUB(idmap, kidmap_batch_getgidbysid,   nomod_zero);
 932  936          STUB(idmap, kidmap_batch_getpidbysid,   nomod_zero);
 933  937          STUB(idmap, kidmap_batch_getsidbygid,   nomod_zero);
 934  938          STUB(idmap, kidmap_batch_getsidbyuid,   nomod_zero);
 935  939          STUB(idmap, kidmap_batch_getuidbysid,   nomod_zero);
 936  940          STUB(idmap, kidmap_get_create,          nomod_zero);
 937  941          STUB(idmap, kidmap_get_destroy,         nomod_zero);
 938  942          STUB(idmap, kidmap_get_mappings,        nomod_zero);
 939  943          STUB(idmap, kidmap_getgidbysid,         nomod_zero);
 940  944          STUB(idmap, kidmap_getpidbysid,         nomod_zero);
 941  945          STUB(idmap, kidmap_getsidbygid,         nomod_zero);
 942  946          STUB(idmap, kidmap_getsidbyuid,         nomod_zero);
 943  947          STUB(idmap, kidmap_getuidbysid,         nomod_zero);
 944  948          STUB(idmap, idmap_get_door,             nomod_einval);
 945  949          STUB(idmap, idmap_unreg_dh,             nomod_einval);
 946  950          STUB(idmap, idmap_reg_dh,               nomod_einval);
 947  951          STUB(idmap, idmap_purge_cache,          nomod_einval);
 948  952          END_MODULE(idmap);
 949  953  #endif
 950  954  
 951  955  /*
 952  956   * Stubs for auditing.
 953  957   */
 954  958  #ifndef C2AUDIT_MODULE
 955  959          MODULE(c2audit,sys);
 956  960          NO_UNLOAD_STUB(c2audit, audit_init_module,      nomod_zero);
 957  961          NO_UNLOAD_STUB(c2audit, audit_start,            nomod_zero);
 958  962          NO_UNLOAD_STUB(c2audit, audit_finish,           nomod_zero);
 959  963          NO_UNLOAD_STUB(c2audit, audit,                  nomod_zero);
 960  964          NO_UNLOAD_STUB(c2audit, auditdoor,              nomod_zero);
 961  965          NO_UNLOAD_STUB(c2audit, audit_closef,           nomod_zero);
 962  966          NO_UNLOAD_STUB(c2audit, audit_core_start,       nomod_zero);
 963  967          NO_UNLOAD_STUB(c2audit, audit_core_finish,      nomod_zero);
 964  968          NO_UNLOAD_STUB(c2audit, audit_strputmsg,        nomod_zero);
 965  969          NO_UNLOAD_STUB(c2audit, audit_savepath,         nomod_zero);
 966  970          NO_UNLOAD_STUB(c2audit, audit_anchorpath,       nomod_zero);
 967  971          NO_UNLOAD_STUB(c2audit, audit_exit,             nomod_zero);
 968  972          NO_UNLOAD_STUB(c2audit, audit_exec,             nomod_zero);
 969  973          NO_UNLOAD_STUB(c2audit, audit_symlink,          nomod_zero);
 970  974          NO_UNLOAD_STUB(c2audit, audit_symlink_create,   nomod_zero);
 971  975          NO_UNLOAD_STUB(c2audit, audit_vncreate_start,   nomod_zero);
 972  976          NO_UNLOAD_STUB(c2audit, audit_vncreate_finish,  nomod_zero);
 973  977          NO_UNLOAD_STUB(c2audit, audit_enterprom,        nomod_zero);
 974  978          NO_UNLOAD_STUB(c2audit, audit_exitprom,         nomod_zero);
 975  979          NO_UNLOAD_STUB(c2audit, audit_chdirec,          nomod_zero);
 976  980          NO_UNLOAD_STUB(c2audit, audit_setf,             nomod_zero);
 977  981          NO_UNLOAD_STUB(c2audit, audit_sock,             nomod_zero);
 978  982          NO_UNLOAD_STUB(c2audit, audit_strgetmsg,        nomod_zero);
 979  983          NO_UNLOAD_STUB(c2audit, audit_ipc,              nomod_zero);
 980  984          NO_UNLOAD_STUB(c2audit, audit_ipcget,           nomod_zero);
 981  985          NO_UNLOAD_STUB(c2audit, audit_fdsend,           nomod_zero);
 982  986          NO_UNLOAD_STUB(c2audit, audit_fdrecv,           nomod_zero);
 983  987          NO_UNLOAD_STUB(c2audit, audit_priv,             nomod_zero);
 984  988          NO_UNLOAD_STUB(c2audit, audit_setppriv,         nomod_zero);
 985  989          NO_UNLOAD_STUB(c2audit, audit_devpolicy,        nomod_zero);
 986  990          NO_UNLOAD_STUB(c2audit, audit_setfsat_path,     nomod_zero);
 987  991          NO_UNLOAD_STUB(c2audit, audit_cryptoadm,        nomod_zero);
 988  992          NO_UNLOAD_STUB(c2audit, audit_kssl,             nomod_zero);
 989  993          NO_UNLOAD_STUB(c2audit, audit_pf_policy,        nomod_zero);
 990  994          NO_UNLOAD_STUB(c2audit, au_doormsg,             nomod_zero);
 991  995          NO_UNLOAD_STUB(c2audit, au_uwrite,              nomod_zero);
 992  996          NO_UNLOAD_STUB(c2audit, au_to_arg32,            nomod_zero);
 993  997          NO_UNLOAD_STUB(c2audit, au_free_rec,            nomod_zero);
 994  998          END_MODULE(c2audit);
 995  999  #endif
 996 1000  
 997 1001  /*
 998 1002   * Stubs for kernel rpc security service module
 999 1003   */
1000 1004  #ifndef RPCSEC_MODULE
1001 1005          MODULE(rpcsec,misc);
1002 1006          NO_UNLOAD_STUB(rpcsec, sec_clnt_revoke,         nomod_zero);
1003 1007          NO_UNLOAD_STUB(rpcsec, authkern_create,         nomod_zero);
1004 1008          NO_UNLOAD_STUB(rpcsec, sec_svc_msg,             nomod_zero);
1005 1009          NO_UNLOAD_STUB(rpcsec, sec_svc_control,         nomod_zero);
1006 1010          END_MODULE(rpcsec);
1007 1011  #endif
1008 1012   
1009 1013  /*
1010 1014   * Stubs for rpc RPCSEC_GSS security service module
1011 1015   */
1012 1016  #ifndef RPCSEC_GSS_MODULE
1013 1017          MODULE(rpcsec_gss,misc);
1014 1018          NO_UNLOAD_STUB(rpcsec_gss, __svcrpcsec_gss,             nomod_zero);
1015 1019          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_getcred,             nomod_zero);
1016 1020          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_set_callback,        nomod_zero);
1017 1021          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secget,              nomod_zero);
1018 1022          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secfree,             nomod_zero);
1019 1023          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_seccreate,           nomod_zero);
1020 1024          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_set_defaults,        nomod_zero);
1021 1025          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_revauth,             nomod_zero);
1022 1026          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_secpurge,            nomod_zero);
1023 1027          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_cleanup,             nomod_zero);
1024 1028          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_get_versions,        nomod_zero);
1025 1029          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_max_data_length,     nomod_zero);
1026 1030          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_svc_max_data_length, nomod_zero);
1027 1031          NO_UNLOAD_STUB(rpcsec_gss, rpc_gss_get_service_type,    nomod_zero);
1028 1032          END_MODULE(rpcsec_gss);
1029 1033  #endif
1030 1034  
1031 1035  /*
1032 1036   * Stubs for PCI configurator module (misc/pcicfg).
1033 1037   */
1034 1038  #ifndef PCICFG_MODULE
1035 1039          MODULE(pcicfg,misc);
1036 1040          STUB(pcicfg, pcicfg_configure, 0);
1037 1041          STUB(pcicfg, pcicfg_unconfigure, 0);
1038 1042          END_MODULE(pcicfg);
1039 1043  #endif
1040 1044  
1041 1045  /*
1042 1046   * Stubs for pcieb nexus driver.
1043 1047   */
1044 1048  #ifndef PCIEB_MODULE
1045 1049          MODULE(pcieb,drv);
1046 1050          STUB(pcieb, pcieb_intel_error_workaround, 0);
1047 1051          END_MODULE(pcieb);
1048 1052  #endif
1049 1053  
1050 1054  #ifndef IWSCN_MODULE
1051 1055          MODULE(iwscn,drv);
1052 1056          STUB(iwscn, srpop, 0);
1053 1057          END_MODULE(iwscn);
1054 1058  #endif
1055 1059  
1056 1060  /*
1057 1061   * Stubs for checkpoint-resume module
1058 1062   */
1059 1063  #ifndef CPR_MODULE
1060 1064          MODULE(cpr,misc);
1061 1065          STUB(cpr, cpr, 0);
1062 1066          END_MODULE(cpr);
1063 1067  #endif
1064 1068  
1065 1069  /*
1066 1070   * Stubs for kernel probes (tnf module).  Not unloadable.
1067 1071   */
1068 1072  #ifndef TNF_MODULE
1069 1073          MODULE(tnf,drv);
1070 1074          NO_UNLOAD_STUB(tnf, tnf_ref32_1,        nomod_zero);
1071 1075          NO_UNLOAD_STUB(tnf, tnf_string_1,       nomod_zero);
1072 1076          NO_UNLOAD_STUB(tnf, tnf_opaque_array_1, nomod_zero);
1073 1077          NO_UNLOAD_STUB(tnf, tnf_struct_tag_1,   nomod_zero);
1074 1078          NO_UNLOAD_STUB(tnf, tnf_allocate,       nomod_zero);
1075 1079          END_MODULE(tnf);
1076 1080  #endif
1077 1081  
1078 1082  /*
1079 1083   * Stubs for i86hvm bootstraping
1080 1084   */
1081 1085  #ifndef HVM_BOOTSTRAP
1082 1086          MODULE(hvm_bootstrap,misc);
1083 1087          NO_UNLOAD_STUB(hvm_bootstrap, hvmboot_rootconf, nomod_zero);
1084 1088          END_MODULE(hvm_bootstrap);
1085 1089  #endif
1086 1090  
1087 1091  /*
1088 1092   * Clustering: stubs for bootstrapping.
1089 1093   */
1090 1094  #ifndef CL_BOOTSTRAP
1091 1095          MODULE(cl_bootstrap,misc);
1092 1096          NO_UNLOAD_WSTUB(cl_bootstrap, clboot_modload, nomod_minus_one);
1093 1097          NO_UNLOAD_WSTUB(cl_bootstrap, clboot_loadrootmodules, nomod_zero);
1094 1098          NO_UNLOAD_WSTUB(cl_bootstrap, clboot_rootconf, nomod_zero);
1095 1099          NO_UNLOAD_WSTUB(cl_bootstrap, clboot_mountroot, nomod_zero);
1096 1100          NO_UNLOAD_WSTUB(cl_bootstrap, clconf_init, nomod_zero);
1097 1101          NO_UNLOAD_WSTUB(cl_bootstrap, clconf_get_nodeid, nomod_zero);
1098 1102          NO_UNLOAD_WSTUB(cl_bootstrap, clconf_maximum_nodeid, nomod_zero);
1099 1103          NO_UNLOAD_WSTUB(cl_bootstrap, cluster, nomod_zero);
1100 1104          END_MODULE(cl_bootstrap);
1101 1105  #endif
1102 1106  
1103 1107  /*
1104 1108   * Clustering: stubs for cluster infrastructure.
1105 1109   */     
1106 1110  #ifndef CL_COMM_MODULE
1107 1111          MODULE(cl_comm,misc);
1108 1112          NO_UNLOAD_STUB(cl_comm, cladmin, nomod_minus_one);
1109 1113          END_MODULE(cl_comm);
1110 1114  #endif
1111 1115  
1112 1116  /*
1113 1117   * Clustering: stubs for global file system operations.
1114 1118   */
1115 1119  #ifndef PXFS_MODULE
1116 1120          MODULE(pxfs,fs);
1117 1121          NO_UNLOAD_WSTUB(pxfs, clpxfs_aio_read, nomod_zero);
1118 1122          NO_UNLOAD_WSTUB(pxfs, clpxfs_aio_write, nomod_zero);
1119 1123          NO_UNLOAD_WSTUB(pxfs, cl_flk_state_transition_notify, nomod_zero);
1120 1124          END_MODULE(pxfs);
1121 1125  #endif
1122 1126  
1123 1127  /*
1124 1128   * Stubs for kernel cryptographic framework module (misc/kcf).
1125 1129   */
1126 1130  #ifndef KCF_MODULE
1127 1131          MODULE(kcf,misc);
1128 1132          NO_UNLOAD_STUB(kcf, crypto_mech2id, nomod_minus_one);
1129 1133          NO_UNLOAD_STUB(kcf, crypto_register_provider, nomod_minus_one);
1130 1134          NO_UNLOAD_STUB(kcf, crypto_unregister_provider, nomod_minus_one);
1131 1135          NO_UNLOAD_STUB(kcf, crypto_provider_notification, nomod_minus_one);
1132 1136          NO_UNLOAD_STUB(kcf, crypto_op_notification, nomod_minus_one);
1133 1137          NO_UNLOAD_STUB(kcf, crypto_kmflag, nomod_minus_one);
1134 1138          NO_UNLOAD_STUB(kcf, crypto_digest, nomod_minus_one);
1135 1139          NO_UNLOAD_STUB(kcf, crypto_digest_prov, nomod_minus_one);
1136 1140          NO_UNLOAD_STUB(kcf, crypto_digest_init, nomod_minus_one);
1137 1141          NO_UNLOAD_STUB(kcf, crypto_digest_init_prov, nomod_minus_one);
1138 1142          NO_UNLOAD_STUB(kcf, crypto_digest_update, nomod_minus_one);
1139 1143          NO_UNLOAD_STUB(kcf, crypto_digest_final, nomod_minus_one);
1140 1144          NO_UNLOAD_STUB(kcf, crypto_digest_key_prov, nomod_minus_one);
1141 1145          NO_UNLOAD_STUB(kcf, crypto_encrypt, nomod_minus_one);
1142 1146          NO_UNLOAD_STUB(kcf, crypto_encrypt_prov, nomod_minus_one);
1143 1147          NO_UNLOAD_STUB(kcf, crypto_encrypt_init, nomod_minus_one);
1144 1148          NO_UNLOAD_STUB(kcf, crypto_encrypt_init_prov, nomod_minus_one);
1145 1149          NO_UNLOAD_STUB(kcf, crypto_encrypt_update, nomod_minus_one);
1146 1150          NO_UNLOAD_STUB(kcf, crypto_encrypt_final, nomod_minus_one);
1147 1151          NO_UNLOAD_STUB(kcf, crypto_decrypt, nomod_minus_one);
1148 1152          NO_UNLOAD_STUB(kcf, crypto_decrypt_prov, nomod_minus_one);
1149 1153          NO_UNLOAD_STUB(kcf, crypto_decrypt_init, nomod_minus_one);
1150 1154          NO_UNLOAD_STUB(kcf, crypto_decrypt_init_prov, nomod_minus_one);
1151 1155          NO_UNLOAD_STUB(kcf, crypto_decrypt_update, nomod_minus_one);
1152 1156          NO_UNLOAD_STUB(kcf, crypto_decrypt_final, nomod_minus_one);
1153 1157          NO_UNLOAD_STUB(kcf, crypto_get_all_mech_info, nomod_minus_one);
1154 1158          NO_UNLOAD_STUB(kcf, crypto_key_check, nomod_minus_one);
1155 1159          NO_UNLOAD_STUB(kcf, crypto_key_check_prov, nomod_minus_one);
1156 1160          NO_UNLOAD_STUB(kcf, crypto_key_derive, nomod_minus_one);
1157 1161          NO_UNLOAD_STUB(kcf, crypto_key_generate, nomod_minus_one);
1158 1162          NO_UNLOAD_STUB(kcf, crypto_key_generate_pair, nomod_minus_one);
1159 1163          NO_UNLOAD_STUB(kcf, crypto_key_unwrap, nomod_minus_one);
1160 1164          NO_UNLOAD_STUB(kcf, crypto_key_wrap, nomod_minus_one);
1161 1165          NO_UNLOAD_STUB(kcf, crypto_mac, nomod_minus_one);
1162 1166          NO_UNLOAD_STUB(kcf, crypto_mac_prov, nomod_minus_one);
1163 1167          NO_UNLOAD_STUB(kcf, crypto_mac_verify, nomod_minus_one);
1164 1168          NO_UNLOAD_STUB(kcf, crypto_mac_verify_prov, nomod_minus_one);
1165 1169          NO_UNLOAD_STUB(kcf, crypto_mac_init, nomod_minus_one);
1166 1170          NO_UNLOAD_STUB(kcf, crypto_mac_init_prov, nomod_minus_one);
1167 1171          NO_UNLOAD_STUB(kcf, crypto_mac_update, nomod_minus_one);
1168 1172          NO_UNLOAD_STUB(kcf, crypto_mac_final, nomod_minus_one);
1169 1173          NO_UNLOAD_STUB(kcf, crypto_mac_decrypt, nomod_minus_one);
1170 1174          NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_prov, nomod_minus_one);
1171 1175          NO_UNLOAD_STUB(kcf, crypto_mac_verify_decrypt, nomod_minus_one);
1172 1176          NO_UNLOAD_STUB(kcf, crypto_mac_verify_decrypt_prov, nomod_minus_one);
1173 1177          NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_init, nomod_minus_one);
1174 1178          NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_init_prov, nomod_minus_one);
1175 1179          NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_update, nomod_minus_one);
1176 1180          NO_UNLOAD_STUB(kcf, crypto_mac_decrypt_final, nomod_minus_one);
1177 1181          NO_UNLOAD_STUB(kcf, crypto_object_copy, nomod_minus_one);
1178 1182          NO_UNLOAD_STUB(kcf, crypto_object_create, nomod_minus_one);
1179 1183          NO_UNLOAD_STUB(kcf, crypto_object_destroy, nomod_minus_one);
1180 1184          NO_UNLOAD_STUB(kcf, crypto_object_find_final, nomod_minus_one);
1181 1185          NO_UNLOAD_STUB(kcf, crypto_object_find_init, nomod_minus_one);
1182 1186          NO_UNLOAD_STUB(kcf, crypto_object_find, nomod_minus_one);
1183 1187          NO_UNLOAD_STUB(kcf, crypto_object_get_attribute_value, nomod_minus_one);
1184 1188          NO_UNLOAD_STUB(kcf, crypto_object_get_size, nomod_minus_one);
1185 1189          NO_UNLOAD_STUB(kcf, crypto_object_set_attribute_value, nomod_minus_one);
1186 1190          NO_UNLOAD_STUB(kcf, crypto_session_close, nomod_minus_one);
1187 1191          NO_UNLOAD_STUB(kcf, crypto_session_login, nomod_minus_one);
1188 1192          NO_UNLOAD_STUB(kcf, crypto_session_logout, nomod_minus_one);
1189 1193          NO_UNLOAD_STUB(kcf, crypto_session_open, nomod_minus_one);
1190 1194          NO_UNLOAD_STUB(kcf, crypto_encrypt_mac, nomod_minus_one);
1191 1195          NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_prov, nomod_minus_one);
1192 1196          NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_init, nomod_minus_one);
1193 1197          NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_init_prov, nomod_minus_one);
1194 1198          NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_update, nomod_minus_one);
1195 1199          NO_UNLOAD_STUB(kcf, crypto_encrypt_mac_final, nomod_minus_one);
1196 1200          NO_UNLOAD_STUB(kcf, crypto_create_ctx_template, nomod_minus_one);
1197 1201          NO_UNLOAD_STUB(kcf, crypto_destroy_ctx_template, nomod_minus_one);
1198 1202          NO_UNLOAD_STUB(kcf, crypto_get_mech_list, nomod_minus_one);
1199 1203          NO_UNLOAD_STUB(kcf, crypto_free_mech_list, nomod_minus_one);
1200 1204          NO_UNLOAD_STUB(kcf, crypto_cancel_req, nomod_minus_one);
1201 1205          NO_UNLOAD_STUB(kcf, crypto_cancel_ctx, nomod_minus_one);
1202 1206          NO_UNLOAD_STUB(kcf, crypto_bufcall_alloc, nomod_minus_one);
1203 1207          NO_UNLOAD_STUB(kcf, crypto_bufcall_free, nomod_minus_one);
1204 1208          NO_UNLOAD_STUB(kcf, crypto_bufcall, nomod_minus_one);
1205 1209          NO_UNLOAD_STUB(kcf, crypto_unbufcall, nomod_minus_one);
1206 1210          NO_UNLOAD_STUB(kcf, crypto_notify_events, nomod_minus_one);
1207 1211          NO_UNLOAD_STUB(kcf, crypto_unnotify_events, nomod_minus_one);
1208 1212          NO_UNLOAD_STUB(kcf, crypto_get_provider, nomod_minus_one);
1209 1213          NO_UNLOAD_STUB(kcf, crypto_get_provinfo, nomod_minus_one);
1210 1214          NO_UNLOAD_STUB(kcf, crypto_release_provider, nomod_minus_one);
1211 1215          NO_UNLOAD_STUB(kcf, crypto_sign, nomod_minus_one);
1212 1216          NO_UNLOAD_STUB(kcf, crypto_sign_prov, nomod_minus_one);
1213 1217          NO_UNLOAD_STUB(kcf, crypto_sign_init, nomod_minus_one);
1214 1218          NO_UNLOAD_STUB(kcf, crypto_sign_init_prov, nomod_minus_one);
1215 1219          NO_UNLOAD_STUB(kcf, crypto_sign_update, nomod_minus_one);
1216 1220          NO_UNLOAD_STUB(kcf, crypto_sign_final, nomod_minus_one);
1217 1221          NO_UNLOAD_STUB(kcf, crypto_sign_recover, nomod_minus_one);
1218 1222          NO_UNLOAD_STUB(kcf, crypto_sign_recover_prov, nomod_minus_one);
1219 1223          NO_UNLOAD_STUB(kcf, crypto_sign_recover_init_prov, nomod_minus_one);
1220 1224          NO_UNLOAD_STUB(kcf, crypto_verify, nomod_minus_one);
1221 1225          NO_UNLOAD_STUB(kcf, crypto_verify_prov, nomod_minus_one);
1222 1226          NO_UNLOAD_STUB(kcf, crypto_verify_init, nomod_minus_one);
1223 1227          NO_UNLOAD_STUB(kcf, crypto_verify_init_prov, nomod_minus_one);
1224 1228          NO_UNLOAD_STUB(kcf, crypto_verify_update, nomod_minus_one);
1225 1229          NO_UNLOAD_STUB(kcf, crypto_verify_final, nomod_minus_one);
1226 1230          NO_UNLOAD_STUB(kcf, crypto_verify_recover, nomod_minus_one);
1227 1231          NO_UNLOAD_STUB(kcf, crypto_verify_recover_prov, nomod_minus_one);
1228 1232          NO_UNLOAD_STUB(kcf, crypto_verify_recover_init_prov, nomod_minus_one);
1229 1233          NO_UNLOAD_STUB(kcf, random_add_entropy, nomod_minus_one);
1230 1234          NO_UNLOAD_STUB(kcf, random_add_pseudo_entropy, nomod_minus_one);
1231 1235          NO_UNLOAD_STUB(kcf, random_get_blocking_bytes, nomod_minus_one);
1232 1236          NO_UNLOAD_STUB(kcf, random_get_bytes, nomod_minus_one);
1233 1237          NO_UNLOAD_STUB(kcf, random_get_pseudo_bytes, nomod_minus_one);
1234 1238          END_MODULE(kcf);
1235 1239  #endif
1236 1240  
1237 1241  /*
1238 1242   * Stubs for sha1. A non-unloadable module.
1239 1243   */
1240 1244  #ifndef SHA1_MODULE
1241 1245          MODULE(sha1,crypto);
1242 1246          NO_UNLOAD_STUB(sha1, SHA1Init, nomod_void);
1243 1247          NO_UNLOAD_STUB(sha1, SHA1Update, nomod_void);
1244 1248          NO_UNLOAD_STUB(sha1, SHA1Final, nomod_void);
1245 1249          END_MODULE(sha1);
1246 1250  #endif
1247 1251  
1248 1252  /*
1249 1253   * The following stubs are used by the mac module.
1250 1254   * Since dld already depends on mac, these
1251 1255   * stubs are needed to avoid circular dependencies.
1252 1256   */
1253 1257  #ifndef DLD_MODULE
1254 1258          MODULE(dld,drv);
1255 1259          STUB(dld, dld_init_ops, nomod_void);
1256 1260          STUB(dld, dld_fini_ops, nomod_void);
1257 1261          STUB(dld, dld_devt_to_instance, nomod_minus_one);
1258 1262          STUB(dld, dld_autopush, nomod_minus_one);
1259 1263          STUB(dld, dld_ioc_register, nomod_einval);
1260 1264          STUB(dld, dld_ioc_unregister, nomod_void);
1261 1265          END_MODULE(dld);
1262 1266  #endif
1263 1267  
1264 1268  /*
1265 1269   * The following stubs are used by the mac module.
1266 1270   * Since dls already depends on mac, these
1267 1271   * stubs are needed to avoid circular dependencies.
1268 1272   */
1269 1273  #ifndef DLS_MODULE
1270 1274          MODULE(dls,misc);
1271 1275          STUB(dls, dls_devnet_mac, nomod_zero);
1272 1276          STUB(dls, dls_devnet_hold_tmp, nomod_einval);
1273 1277          STUB(dls, dls_devnet_rele_tmp, nomod_void);
1274 1278          STUB(dls, dls_devnet_hold_link, nomod_einval);
1275 1279          STUB(dls, dls_devnet_rele_link, nomod_void);
1276 1280          STUB(dls, dls_devnet_prop_task_wait, nomod_void);
1277 1281          STUB(dls, dls_mgmt_get_linkid, nomod_einval);
1278 1282          STUB(dls, dls_devnet_macname2linkid, nomod_einval);
1279 1283          STUB(dls, dls_mgmt_get_linkinfo, nomod_einval);
1280 1284          END_MODULE(dls);
1281 1285  #endif
1282 1286  
1283 1287  #ifndef SOFTMAC_MODULE
1284 1288          MODULE(softmac,drv);
1285 1289          STUB(softmac, softmac_hold_device, nomod_einval);
1286 1290          STUB(softmac, softmac_rele_device, nomod_void);
1287 1291          STUB(softmac, softmac_recreate, nomod_void);
1288 1292          END_MODULE(softmac);
1289 1293  #endif
1290 1294  
1291 1295  #ifndef IPTUN_MODULE
1292 1296          MODULE(iptun,drv);
1293 1297          STUB(iptun, iptun_create, nomod_einval);
1294 1298          STUB(iptun, iptun_delete, nomod_einval);
1295 1299          STUB(iptun, iptun_set_policy, nomod_void) ;
1296 1300          END_MODULE(iptun);
1297 1301  #endif
1298 1302  
1299 1303  /*
1300 1304   * Stubs for dcopy, for Intel IOAT KAPIs
1301 1305   */
1302 1306  #ifndef DCOPY_MODULE
1303 1307          MODULE(dcopy,misc);
1304 1308          NO_UNLOAD_STUB(dcopy, dcopy_query, nomod_minus_one);
1305 1309          NO_UNLOAD_STUB(dcopy, dcopy_query_channel, nomod_minus_one);
1306 1310          NO_UNLOAD_STUB(dcopy, dcopy_alloc, nomod_minus_one);
1307 1311          NO_UNLOAD_STUB(dcopy, dcopy_free, nomod_minus_one);
1308 1312          NO_UNLOAD_STUB(dcopy, dcopy_cmd_alloc, nomod_minus_one);
1309 1313          NO_UNLOAD_STUB(dcopy, dcopy_cmd_free, nomod_void);
1310 1314          NO_UNLOAD_STUB(dcopy, dcopy_cmd_post, nomod_minus_one);
1311 1315          NO_UNLOAD_STUB(dcopy, dcopy_cmd_poll, nomod_minus_one);
1312 1316          END_MODULE(dcopy);
1313 1317  #endif
1314 1318  
1315 1319  /*
1316 1320   * Stubs for acpica
1317 1321   */
1318 1322  #ifndef ACPICA_MODULE
1319 1323          MODULE(acpica,misc);
1320 1324          NO_UNLOAD_STUB(acpica, AcpiOsReadPort, nomod_minus_one) ;
1321 1325          NO_UNLOAD_STUB(acpica, AcpiOsWritePort, nomod_minus_one) ;
1322 1326          NO_UNLOAD_STUB(acpica, AcpiInstallNotifyHandler, nomod_minus_one) ;
1323 1327          NO_UNLOAD_STUB(acpica, AcpiRemoveNotifyHandler, nomod_minus_one) ;
1324 1328          NO_UNLOAD_STUB(acpica, AcpiEvaluateObject, nomod_minus_one) ;
1325 1329          NO_UNLOAD_STUB(acpica, AcpiEvaluateObjectTyped, nomod_minus_one) ;
1326 1330          NO_UNLOAD_STUB(acpica, AcpiWriteBitRegister, nomod_minus_one) ;
1327 1331          NO_UNLOAD_STUB(acpica, AcpiReadBitRegister, nomod_minus_one) ;
1328 1332          NO_UNLOAD_STUB(acpica, AcpiOsFree, nomod_minus_one) ;
1329 1333          NO_UNLOAD_STUB(acpica, acpica_get_handle_cpu, nomod_minus_one) ;
1330 1334          NO_UNLOAD_STUB(acpica, acpica_get_global_FADT, nomod_minus_one) ;
1331 1335          NO_UNLOAD_STUB(acpica, acpica_write_cpupm_capabilities,
1332 1336              nomod_minus_one)                   ;
1333 1337          NO_UNLOAD_STUB(acpica, __acpi_wbinvd, nomod_minus_one) ;
1334 1338          NO_UNLOAD_STUB(acpica, acpi_reset_system, nomod_minus_one) ;
1335 1339          END_MODULE(acpica);
1336 1340  #endif
1337 1341  
1338 1342  /*
1339 1343   * Stubs for acpidev
1340 1344   */
1341 1345  #ifndef ACPIDEV_MODULE
1342 1346          MODULE(acpidev,misc);
1343 1347          NO_UNLOAD_STUB(acpidev, acpidev_dr_get_cpu_numa_info, nomod_minus_one) ;
1344 1348          NO_UNLOAD_STUB(acpidev, acpidev_dr_free_cpu_numa_info,
1345 1349              nomod_minus_one) ;
1346 1350          END_MODULE(acpidev);
1347 1351  #endif
1348 1352  
1349 1353  #ifndef IPNET_MODULE
1350 1354          MODULE(ipnet,drv);
1351 1355          STUB(ipnet, ipnet_if_getdev, nomod_zero);
1352 1356          STUB(ipnet, ipnet_walk_if, nomod_zero);
1353 1357          END_MODULE(ipnet);
1354 1358  #endif
1355 1359  
1356 1360  #ifndef IOMMULIB_MODULE
1357 1361          MODULE(iommulib,misc);
1358 1362          STUB(iommulib, iommulib_nex_close, nomod_void);
1359 1363          END_MODULE(iommulib);
1360 1364  #endif
1361 1365  
1362 1366  /*
1363 1367   * Stubs for rootnex nexus driver.
1364 1368   */
1365 1369  #ifndef ROOTNEX_MODULE
1366 1370          MODULE(rootnex,drv);
1367 1371          STUB(rootnex, immu_init, 0);
1368 1372          STUB(rootnex, immu_startup, 0);
1369 1373          STUB(rootnex, immu_physmem_update, 0);
1370 1374          END_MODULE(rootnex);
1371 1375  #endif
1372 1376  
1373 1377  /*
1374 1378   * Stubs for kernel socket, for iscsi
1375 1379   */
1376 1380  #ifndef KSOCKET_MODULE
1377 1381          MODULE(ksocket, misc);
1378 1382          NO_UNLOAD_STUB(ksocket, ksocket_setsockopt, nomod_minus_one);
1379 1383          NO_UNLOAD_STUB(ksocket, ksocket_getsockopt, nomod_minus_one);
1380 1384          NO_UNLOAD_STUB(ksocket, ksocket_getpeername, nomod_minus_one);
1381 1385          NO_UNLOAD_STUB(ksocket, ksocket_getsockname, nomod_minus_one);
1382 1386          NO_UNLOAD_STUB(ksocket, ksocket_socket, nomod_minus_one);
1383 1387          NO_UNLOAD_STUB(ksocket, ksocket_bind, nomod_minus_one);
1384 1388          NO_UNLOAD_STUB(ksocket, ksocket_listen, nomod_minus_one);
1385 1389          NO_UNLOAD_STUB(ksocket, ksocket_accept, nomod_minus_one);
1386 1390          NO_UNLOAD_STUB(ksocket, ksocket_connect, nomod_minus_one);
1387 1391          NO_UNLOAD_STUB(ksocket, ksocket_recv, nomod_minus_one);
1388 1392          NO_UNLOAD_STUB(ksocket, ksocket_recvfrom, nomod_minus_one);
1389 1393          NO_UNLOAD_STUB(ksocket, ksocket_recvmsg, nomod_minus_one);
1390 1394          NO_UNLOAD_STUB(ksocket, ksocket_send, nomod_minus_one);
1391 1395          NO_UNLOAD_STUB(ksocket, ksocket_sendto, nomod_minus_one);
1392 1396          NO_UNLOAD_STUB(ksocket, ksocket_sendmsg, nomod_minus_one);
1393 1397          NO_UNLOAD_STUB(ksocket, ksocket_ioctl, nomod_minus_one);
1394 1398          NO_UNLOAD_STUB(ksocket, ksocket_setcallbacks, nomod_minus_one);
1395 1399          NO_UNLOAD_STUB(ksocket, ksocket_hold, nomod_minus_one);
1396 1400          NO_UNLOAD_STUB(ksocket, ksocket_rele, nomod_minus_one);
1397 1401          NO_UNLOAD_STUB(ksocket, ksocket_shutdown, nomod_minus_one);
1398 1402          NO_UNLOAD_STUB(ksocket, ksocket_close, nomod_minus_one);
1399 1403          END_MODULE(ksocket);
1400 1404  #endif
1401 1405  
1402 1406  /*
1403 1407   * Stubs for elfexec
1404 1408   */
1405 1409  #ifndef ELFEXEC_MODULE
1406 1410          MODULE(elfexec,exec);
1407 1411          STUB(elfexec, elfexec,          nomod_einval);
1408 1412          STUB(elfexec, mapexec_brand,    nomod_einval);
1409 1413  #if defined(__amd64)
1410 1414          STUB(elfexec, elf32exec,        nomod_einval);
1411 1415          STUB(elfexec, mapexec32_brand,  nomod_einval);
1412 1416  #endif
1413 1417          END_MODULE(elfexec);
1414 1418  #endif
1415 1419  
1416 1420  /*
1417 1421   * Stub(s) for APIX module.
1418 1422   */
1419 1423  #ifndef APIX_MODULE
1420 1424          MODULE(apix,mach);
1421 1425          WSTUB(apix, apix_loaded, nomod_zero);
1422 1426          END_MODULE(apix);
1423 1427  #endif
1424 1428  
1425 1429  / this is just a marker for the area of text that contains stubs 
1426 1430  
1427 1431          ENTRY_NP(stubs_end)
1428 1432          nop
1429 1433  
1430 1434  #endif  /* lint */
  
    | 
      ↓ open down ↓ | 
    1080 lines elided | 
    
      ↑ open up ↑ | 
  
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX