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/9.0/sys/kern/vnode_if.src 221836 2011-05-13 14:29:28Z mdf $
   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 %% advlockpurge vp      E E E
  457 
  458 vop_advlockpurge {
  459         IN struct vnode *vp;
  460 };
  461 
  462 
  463 %% reallocblks  vp      E E E
  464 
  465 vop_reallocblks {
  466         IN struct vnode *vp;
  467         IN struct cluster_save *buflist;
  468 };
  469 
  470 
  471 %% getpages     vp      L L L
  472 
  473 vop_getpages {
  474         IN struct vnode *vp;
  475         IN vm_page_t *m;
  476         IN int count;
  477         IN int reqpage;
  478         IN vm_ooffset_t offset;
  479 };
  480 
  481 
  482 %% putpages     vp      E E E
  483 
  484 vop_putpages {
  485         IN struct vnode *vp;
  486         IN vm_page_t *m;
  487         IN int count;
  488         IN int sync;
  489         IN int *rtvals;
  490         IN vm_ooffset_t offset;
  491 };
  492 
  493 
  494 %% getacl       vp      L L L
  495 
  496 vop_getacl {
  497         IN struct vnode *vp;
  498         IN acl_type_t type;
  499         OUT struct acl *aclp;
  500         IN struct ucred *cred;
  501         IN struct thread *td;
  502 };
  503 
  504 
  505 %% setacl       vp      E E E
  506 
  507 vop_setacl {
  508         IN struct vnode *vp;
  509         IN acl_type_t type;
  510         IN struct acl *aclp;
  511         IN struct ucred *cred;
  512         IN struct thread *td;
  513 };
  514 
  515 
  516 %% aclcheck     vp      = = =
  517 
  518 vop_aclcheck {
  519         IN struct vnode *vp;
  520         IN acl_type_t type;
  521         IN struct acl *aclp;
  522         IN struct ucred *cred;
  523         IN struct thread *td;
  524 };
  525 
  526 
  527 %% closeextattr vp      L L L
  528 
  529 vop_closeextattr {
  530         IN struct vnode *vp;
  531         IN int commit;
  532         IN struct ucred *cred;
  533         IN struct thread *td;
  534 };
  535 
  536 
  537 %% getextattr   vp      L L L
  538 
  539 vop_getextattr {
  540         IN struct vnode *vp;
  541         IN int attrnamespace;
  542         IN const char *name;
  543         INOUT struct uio *uio;
  544         OUT size_t *size;
  545         IN struct ucred *cred;
  546         IN struct thread *td;
  547 };
  548 
  549 
  550 %% listextattr  vp      L L L
  551 
  552 vop_listextattr {
  553         IN struct vnode *vp;
  554         IN int attrnamespace;
  555         INOUT struct uio *uio;
  556         OUT size_t *size;
  557         IN struct ucred *cred;
  558         IN struct thread *td;
  559 };
  560 
  561 
  562 %% openextattr  vp      L L L
  563 
  564 vop_openextattr {
  565         IN struct vnode *vp;
  566         IN struct ucred *cred;
  567         IN struct thread *td;
  568 };
  569 
  570 
  571 %% deleteextattr        vp      E E E
  572 
  573 vop_deleteextattr {
  574         IN struct vnode *vp;
  575         IN int attrnamespace;
  576         IN const char *name;
  577         IN struct ucred *cred;
  578         IN struct thread *td;
  579 };
  580 
  581 
  582 %% setextattr   vp      E E E
  583 
  584 vop_setextattr {
  585         IN struct vnode *vp;
  586         IN int attrnamespace;
  587         IN const char *name;
  588         INOUT struct uio *uio;
  589         IN struct ucred *cred;
  590         IN struct thread *td;
  591 };
  592 
  593 
  594 %% setlabel     vp      E E E
  595 
  596 vop_setlabel {
  597         IN struct vnode *vp;
  598         IN struct label *label;
  599         IN struct ucred *cred;
  600         IN struct thread *td;
  601 };
  602 
  603 
  604 %% vptofh       vp      = = =
  605 
  606 vop_vptofh {
  607         IN struct vnode *vp;
  608         IN struct fid *fhp;
  609 };
  610 
  611 
  612 %% vptocnp              vp      L L L
  613 %% vptocnp              vpp     - U -
  614 
  615 vop_vptocnp {
  616         IN struct vnode *vp;
  617         OUT struct vnode **vpp;
  618         IN struct ucred *cred;
  619         INOUT char *buf;
  620         INOUT int *buflen;
  621 };
  622 
  623 
  624 %% allocate     vp      E E E
  625 
  626 vop_allocate {
  627         IN struct vnode *vp;
  628         INOUT off_t *offset;
  629         INOUT off_t *len;
  630 };

Cache object: 0a3f129534f917a092494707cb4d5fe4


[ 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.