The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/kern/vnode_if.src

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #-
    2 # Copyright (c) 1992, 1993
    3 #       The Regents of the University of California.  All rights reserved.
    4 #
    5 # Redistribution and use in source and binary forms, with or without
    6 # modification, are permitted provided that the following conditions
    7 # are met:
    8 # 1. Redistributions of source code must retain the above copyright
    9 #    notice, this list of conditions and the following disclaimer.
   10 # 2. Redistributions in binary form must reproduce the above copyright
   11 #    notice, this list of conditions and the following disclaimer in the
   12 #    documentation and/or other materials provided with the distribution.
   13 # 4. Neither the name of the University nor the names of its contributors
   14 #    may be used to endorse or promote products derived from this software
   15 #    without specific prior written permission.
   16 #
   17 # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   18 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   19 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   20 # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   21 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   22 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   23 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   24 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   25 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   26 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   27 # SUCH DAMAGE.
   28 #
   29 #       @(#)vnode_if.src        8.12 (Berkeley) 5/14/95
   30 # $FreeBSD: releng/8.1/sys/kern/vnode_if.src 199583 2009-11-20 15:27:52Z jhb $
   31 #
   32 
   33 #
   34 # Above each of the vop descriptors in lines starting with %%
   35 # is a specification of the locking protocol used by each vop call.
   36 # The first column is the name of the variable, the remaining three
   37 # columns are in, out and error respectively.  The "in" column defines
   38 # the lock state on input, the "out" column defines the state on succesful
   39 # return, and the "error" column defines the locking state on error exit.
   40 #
   41 # The locking value can take the following values:
   42 # L: locked; not converted to type of lock.
   43 # A: any lock type.
   44 # S: locked with shared lock.
   45 # E: locked with exclusive lock for this process.
   46 # O: locked with exclusive lock for other process.
   47 # U: unlocked.
   48 # -: not applicable.  vnode does not yet (or no longer) exists.
   49 # =: the same on input and output, may be either L or U.
   50 # X: locked if not nil.
   51 #
   52 # The paramater named "vpp" is assumed to be always used with double
   53 # indirection (**vpp) and that name is hard-codeed in vnode_if.awk !
   54 #
   55 # Lines starting with %! specify a pre or post-condition function
   56 # to call before/after the vop call.
   57 #
   58 # If other such parameters are introduced, they have to be added to
   59 # the AWK script at the head of the definition of "add_debug_code()".
   60 #
   61 
   62 vop_islocked {
   63         IN struct vnode *vp;
   64 };
   65 
   66 %% lookup       dvp     L ? ?
   67 %% lookup       vpp     - L -
   68 %! lookup       pre     vop_lookup_pre
   69 %! lookup       post    vop_lookup_post
   70 
   71 # XXX - the lookup locking protocol defies simple description and depends
   72 #       on the flags and operation fields in the (cnp) structure.  Note
   73 #       especially that *vpp may equal dvp and both may be locked.
   74 
   75 vop_lookup {
   76         IN struct vnode *dvp;
   77         INOUT struct vnode **vpp;
   78         IN struct componentname *cnp;
   79 };
   80 
   81 %% cachedlookup dvp     L ? ?
   82 %% cachedlookup vpp     - L -
   83 
   84 # This must be an exact copy of lookup.  See kern/vfs_cache.c for details.
   85 
   86 vop_cachedlookup {
   87         IN struct vnode *dvp;
   88         INOUT struct vnode **vpp;
   89         IN struct componentname *cnp;
   90 };
   91 
   92 %% create       dvp     E E E
   93 %% create       vpp     - L -
   94 %! create       post    vop_create_post
   95 
   96 vop_create {
   97         IN struct vnode *dvp;
   98         OUT struct vnode **vpp;
   99         IN struct componentname *cnp;
  100         IN struct vattr *vap;
  101 };
  102 
  103 
  104 %% whiteout     dvp     E E E
  105 
  106 vop_whiteout {
  107         IN struct vnode *dvp;
  108         IN struct componentname *cnp;
  109         IN int flags;
  110 };
  111 
  112 
  113 %% mknod        dvp     E E E
  114 %% mknod        vpp     - L -
  115 %! mknod        post    vop_mknod_post
  116 
  117 vop_mknod {
  118         IN struct vnode *dvp;
  119         OUT struct vnode **vpp;
  120         IN struct componentname *cnp;
  121         IN struct vattr *vap;
  122 };
  123 
  124 
  125 %% open         vp      L L L
  126 
  127 vop_open {
  128         IN struct vnode *vp;
  129         IN int mode;
  130         IN struct ucred *cred;
  131         IN struct thread *td;
  132         IN struct file *fp;
  133 };
  134 
  135 
  136 %% close        vp      L L L
  137 
  138 vop_close {
  139         IN struct vnode *vp;
  140         IN int fflag;
  141         IN struct ucred *cred;
  142         IN struct thread *td;
  143 };
  144 
  145 
  146 %% access       vp      L L L
  147 
  148 vop_access {
  149         IN struct vnode *vp;
  150         IN accmode_t accmode;
  151         IN struct ucred *cred;
  152         IN struct thread *td;
  153 };
  154 
  155 
  156 %% accessx      vp      L L L
  157 
  158 vop_accessx {
  159         IN struct vnode *vp;
  160         IN accmode_t accmode;
  161         IN struct ucred *cred;
  162         IN struct thread *td;
  163 };
  164 
  165 
  166 %% getattr      vp      L L L
  167 
  168 vop_getattr {
  169         IN struct vnode *vp;
  170         OUT struct vattr *vap;
  171         IN struct ucred *cred;
  172 };
  173 
  174 
  175 %% setattr      vp      E E E
  176 %! setattr      post    vop_setattr_post
  177 
  178 vop_setattr {
  179         IN struct vnode *vp;
  180         IN struct vattr *vap;
  181         IN struct ucred *cred;
  182 };
  183 
  184 %% markatime    vp      L L L
  185 
  186 vop_markatime {
  187         IN struct vnode *vp;
  188 };
  189 
  190 %% read         vp      L L L
  191 
  192 vop_read {
  193         IN struct vnode *vp;
  194         INOUT struct uio *uio;
  195         IN int ioflag;
  196         IN struct ucred *cred;
  197 };
  198 
  199 
  200 %% write        vp      L L L
  201 %! write        pre     VOP_WRITE_PRE
  202 %! write        post    VOP_WRITE_POST
  203 
  204 vop_write {
  205         IN struct vnode *vp;
  206         INOUT struct uio *uio;
  207         IN int ioflag;
  208         IN struct ucred *cred;
  209 };
  210 
  211 
  212 %% ioctl        vp      U U U
  213 
  214 vop_ioctl {
  215         IN struct vnode *vp;
  216         IN u_long command;
  217         IN void *data;
  218         IN int fflag;
  219         IN struct ucred *cred;
  220         IN struct thread *td;
  221 };
  222 
  223 
  224 %% poll         vp      U U U
  225 
  226 vop_poll {
  227         IN struct vnode *vp;
  228         IN int events;
  229         IN struct ucred *cred;
  230         IN struct thread *td;
  231 };
  232 
  233 
  234 %% kqfilter     vp      U U U
  235 
  236 vop_kqfilter {
  237         IN struct vnode *vp;
  238         IN struct knote *kn;
  239 };
  240 
  241 
  242 %% revoke       vp      L L L
  243 
  244 vop_revoke {
  245         IN struct vnode *vp;
  246         IN int flags;
  247 };
  248 
  249 
  250 %% fsync        vp      L L L
  251 
  252 vop_fsync {
  253         IN struct vnode *vp;
  254         IN int waitfor;
  255         IN struct thread *td;
  256 };
  257 
  258 
  259 %% remove       dvp     E E E
  260 %% remove       vp      E E E
  261 %! remove       post    vop_remove_post
  262 
  263 vop_remove {
  264         IN struct vnode *dvp;
  265         IN struct vnode *vp;
  266         IN struct componentname *cnp;
  267 };
  268 
  269 
  270 %% link         tdvp    E E E
  271 %% link         vp      E E E
  272 %! link         post    vop_link_post
  273 
  274 vop_link {
  275         IN struct vnode *tdvp;
  276         IN struct vnode *vp;
  277         IN struct componentname *cnp;
  278 };
  279 
  280 
  281 %! rename       pre     vop_rename_pre
  282 %! rename       post    vop_rename_post
  283 
  284 vop_rename {
  285         IN WILLRELE struct vnode *fdvp;
  286         IN WILLRELE struct vnode *fvp;
  287         IN struct componentname *fcnp;
  288         IN WILLRELE struct vnode *tdvp;
  289         IN WILLRELE struct vnode *tvp;
  290         IN struct componentname *tcnp;
  291 };
  292 
  293 
  294 %% mkdir        dvp     E E E
  295 %% mkdir        vpp     - E -
  296 %! mkdir        post    vop_mkdir_post
  297 
  298 vop_mkdir {
  299         IN struct vnode *dvp;
  300         OUT struct vnode **vpp;
  301         IN struct componentname *cnp;
  302         IN struct vattr *vap;
  303 };
  304 
  305 
  306 %% rmdir        dvp     E E E
  307 %% rmdir        vp      E E E
  308 %! rmdir        post    vop_rmdir_post
  309 
  310 vop_rmdir {
  311         IN struct vnode *dvp;
  312         IN struct vnode *vp;
  313         IN struct componentname *cnp;
  314 };
  315 
  316 
  317 %% symlink      dvp     E E E
  318 %% symlink      vpp     - E -
  319 %! symlink      post    vop_symlink_post
  320 
  321 vop_symlink {
  322         IN struct vnode *dvp;
  323         OUT struct vnode **vpp;
  324         IN struct componentname *cnp;
  325         IN struct vattr *vap;
  326         IN char *target;
  327 };
  328 
  329 
  330 %% readdir      vp      L L L
  331 
  332 vop_readdir {
  333         IN struct vnode *vp;
  334         INOUT struct uio *uio;
  335         IN struct ucred *cred;
  336         INOUT int *eofflag;
  337         OUT int *ncookies;
  338         INOUT u_long **cookies;
  339 };
  340 
  341 
  342 %% readlink     vp      L L L
  343 
  344 vop_readlink {
  345         IN struct vnode *vp;
  346         INOUT struct uio *uio;
  347         IN struct ucred *cred;
  348 };
  349 
  350 
  351 %% inactive     vp      E E E
  352 
  353 vop_inactive {
  354         IN struct vnode *vp;
  355         IN struct thread *td;
  356 };
  357 
  358 
  359 %% reclaim      vp      E E E
  360 
  361 vop_reclaim {
  362         IN struct vnode *vp;
  363         IN struct thread *td;
  364 };
  365 
  366 
  367 %! lock1        pre     vop_lock_pre
  368 %! lock1        post    vop_lock_post
  369 
  370 vop_lock1 {
  371         IN struct vnode *vp;
  372         IN int flags;
  373         IN char *file;
  374         IN int line;
  375 };
  376 
  377 
  378 %! unlock       pre     vop_unlock_pre
  379 %! unlock       post    vop_unlock_post
  380 
  381 vop_unlock {
  382         IN struct vnode *vp;
  383         IN int flags;
  384 };
  385 
  386 
  387 %% bmap         vp      L L L
  388 
  389 vop_bmap {
  390         IN struct vnode *vp;
  391         IN daddr_t bn;
  392         OUT struct bufobj **bop;
  393         IN daddr_t *bnp;
  394         OUT int *runp;
  395         OUT int *runb;
  396 };
  397 
  398 
  399 %% strategy     vp      L L L
  400 %! strategy     pre     vop_strategy_pre
  401 
  402 vop_strategy {
  403         IN struct vnode *vp;
  404         IN struct buf *bp;
  405 };
  406 
  407 
  408 %% getwritemount vp     = = =
  409 
  410 vop_getwritemount {
  411         IN struct vnode *vp;
  412         OUT struct mount **mpp;
  413 };
  414 
  415 
  416 %% print        vp      - - -
  417 
  418 vop_print {
  419         IN struct vnode *vp;
  420 };
  421 
  422 
  423 %% pathconf     vp      L L L
  424 
  425 vop_pathconf {
  426         IN struct vnode *vp;
  427         IN int name;
  428         OUT register_t *retval;
  429 };
  430 
  431 
  432 %% advlock      vp      U U U
  433 
  434 vop_advlock {
  435         IN struct vnode *vp;
  436         IN void *id;
  437         IN int op;
  438         IN struct flock *fl;
  439         IN int flags;
  440 };
  441 
  442 
  443 %% advlockasync vp      U U U
  444 
  445 vop_advlockasync {
  446         IN struct vnode *vp;
  447         IN void *id;
  448         IN int op;
  449         IN struct flock *fl;
  450         IN int flags;
  451         IN struct task *task;   
  452         INOUT void **cookiep;
  453 };
  454 
  455 
  456 %% reallocblks  vp      E E E
  457 
  458 vop_reallocblks {
  459         IN struct vnode *vp;
  460         IN struct cluster_save *buflist;
  461 };
  462 
  463 
  464 %% getpages     vp      L L L
  465 
  466 vop_getpages {
  467         IN struct vnode *vp;
  468         IN vm_page_t *m;
  469         IN int count;
  470         IN int reqpage;
  471         IN vm_ooffset_t offset;
  472 };
  473 
  474 
  475 %% putpages     vp      E E E
  476 
  477 vop_putpages {
  478         IN struct vnode *vp;
  479         IN vm_page_t *m;
  480         IN int count;
  481         IN int sync;
  482         IN int *rtvals;
  483         IN vm_ooffset_t offset;
  484 };
  485 
  486 
  487 %% getacl       vp      L L L
  488 
  489 vop_getacl {
  490         IN struct vnode *vp;
  491         IN acl_type_t type;
  492         OUT struct acl *aclp;
  493         IN struct ucred *cred;
  494         IN struct thread *td;
  495 };
  496 
  497 
  498 %% setacl       vp      E E E
  499 
  500 vop_setacl {
  501         IN struct vnode *vp;
  502         IN acl_type_t type;
  503         IN struct acl *aclp;
  504         IN struct ucred *cred;
  505         IN struct thread *td;
  506 };
  507 
  508 
  509 %% aclcheck     vp      = = =
  510 
  511 vop_aclcheck {
  512         IN struct vnode *vp;
  513         IN acl_type_t type;
  514         IN struct acl *aclp;
  515         IN struct ucred *cred;
  516         IN struct thread *td;
  517 };
  518 
  519 
  520 %% closeextattr vp      L L L
  521 
  522 vop_closeextattr {
  523         IN struct vnode *vp;
  524         IN int commit;
  525         IN struct ucred *cred;
  526         IN struct thread *td;
  527 };
  528 
  529 
  530 %% getextattr   vp      L L L
  531 
  532 vop_getextattr {
  533         IN struct vnode *vp;
  534         IN int attrnamespace;
  535         IN const char *name;
  536         INOUT struct uio *uio;
  537         OUT size_t *size;
  538         IN struct ucred *cred;
  539         IN struct thread *td;
  540 };
  541 
  542 
  543 %% listextattr  vp      L L L
  544 
  545 vop_listextattr {
  546         IN struct vnode *vp;
  547         IN int attrnamespace;
  548         INOUT struct uio *uio;
  549         OUT size_t *size;
  550         IN struct ucred *cred;
  551         IN struct thread *td;
  552 };
  553 
  554 
  555 %% openextattr  vp      L L L
  556 
  557 vop_openextattr {
  558         IN struct vnode *vp;
  559         IN struct ucred *cred;
  560         IN struct thread *td;
  561 };
  562 
  563 
  564 %% deleteextattr        vp      E E E
  565 
  566 vop_deleteextattr {
  567         IN struct vnode *vp;
  568         IN int attrnamespace;
  569         IN const char *name;
  570         IN struct ucred *cred;
  571         IN struct thread *td;
  572 };
  573 
  574 
  575 %% setextattr   vp      E E E
  576 
  577 vop_setextattr {
  578         IN struct vnode *vp;
  579         IN int attrnamespace;
  580         IN const char *name;
  581         INOUT struct uio *uio;
  582         IN struct ucred *cred;
  583         IN struct thread *td;
  584 };
  585 
  586 
  587 %% setlabel     vp      E E E
  588 
  589 vop_setlabel {
  590         IN struct vnode *vp;
  591         IN struct label *label;
  592         IN struct ucred *cred;
  593         IN struct thread *td;
  594 };
  595 
  596 
  597 %% vptofh       vp      = = =
  598 
  599 vop_vptofh {
  600         IN struct vnode *vp;
  601         IN struct fid *fhp;
  602 };
  603 
  604 %% vptocnp              vp      L L L
  605 %% vptocnp              vpp     - U -
  606 
  607 vop_vptocnp {
  608         IN struct vnode *vp;
  609         OUT struct vnode **vpp;
  610         IN struct ucred *cred;
  611         INOUT char *buf;
  612         INOUT int *buflen;
  613 };

Cache object: abdca2f872de703800ae28c87f9beb42


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.