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 # 3. All advertising materials mentioning features or use of this software
   14 #    must display the following acknowledgement:
   15 #       This product includes software developed by the University of
   16 #       California, Berkeley and its contributors.
   17 # 4. Neither the name of the University nor the names of its contributors
   18 #    may be used to endorse or promote products derived from this software
   19 #    without specific prior written permission.
   20 #
   21 # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   22 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   23 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   24 # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   25 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   26 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   27 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   28 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   29 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   30 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   31 # SUCH DAMAGE.
   32 #
   33 #       @(#)vnode_if.src        8.12 (Berkeley) 5/14/95
   34 # $FreeBSD$
   35 #
   36 
   37 #
   38 # Above each of the vop descriptors is a specification of the locking
   39 # protocol used by each vop call.  The first column is the name of
   40 # the variable, the remaining three columns are in, out and error
   41 # respectively.  The "in" column defines the lock state on input,
   42 # the "out" column defines the state on succesful return, and the
   43 # "error" column defines the locking state on error exit.
   44 #
   45 # The locking value can take the following values:
   46 # L: locked; not converted to type of lock.
   47 # A: any lock type.
   48 # S: locked with shared lock.
   49 # E: locked with exclusive lock for this process.
   50 # O: locked with exclusive lock for other process.
   51 # U: unlocked.
   52 # -: not applicable.  vnode does not yet (or no longer) exists.
   53 # =: the same on input and output, may be either L or U.
   54 # X: locked if not nil.
   55 #
   56 
   57 #
   58 #% islocked     vp      = = =
   59 #
   60 vop_islocked {
   61         IN struct vnode *vp;
   62         IN struct proc *p;
   63 };
   64 
   65 #
   66 #% lookup       dvp     L ? ?
   67 #% lookup       vpp     - L -
   68 #
   69 # XXX - the lookup locking protocol defies simple description and depends
   70 #       on the flags and operation fields in the (cnp) structure.  Note
   71 #       especially that *vpp may equal dvp and both may be locked.
   72 #
   73 vop_lookup {
   74         IN struct vnode *dvp;
   75         INOUT struct vnode **vpp;
   76         IN struct componentname *cnp;
   77 };
   78 
   79 #
   80 #% cachedlookup dvp     L ? ?
   81 #% cachedlookup vpp     - L -
   82 #
   83 # This must be an exact copy of lookup.  See kern/vfs_cache.c for details.
   84 #
   85 vop_cachedlookup {
   86         IN struct vnode *dvp;
   87         INOUT struct vnode **vpp;
   88         IN struct componentname *cnp;
   89 };
   90 
   91 #
   92 #% create       dvp     L L L
   93 #% create       vpp     - L -
   94 #
   95 vop_create {
   96         IN struct vnode *dvp;
   97         OUT struct vnode **vpp;
   98         IN struct componentname *cnp;
   99         IN struct vattr *vap;
  100 };
  101 
  102 #
  103 #% whiteout     dvp     L L L
  104 #
  105 vop_whiteout {
  106         IN struct vnode *dvp;
  107         IN struct componentname *cnp;
  108         IN int flags;
  109 };
  110 
  111 #
  112 #% mknod        dvp     L L L
  113 #% mknod        vpp     - X -
  114 #
  115 vop_mknod {
  116         IN struct vnode *dvp;
  117         OUT struct vnode **vpp;
  118         IN struct componentname *cnp;
  119         IN struct vattr *vap;
  120 };
  121 
  122 #
  123 #% open         vp      L L L
  124 #
  125 vop_open {
  126         IN struct vnode *vp;
  127         IN int mode;
  128         IN struct ucred *cred;
  129         IN struct proc *p;
  130 };
  131 
  132 #
  133 #% close        vp      U U U
  134 #
  135 vop_close {
  136         IN struct vnode *vp;
  137         IN int fflag;
  138         IN struct ucred *cred;
  139         IN struct proc *p;
  140 };
  141 
  142 #
  143 #% access       vp      L L L
  144 #
  145 vop_access {
  146         IN struct vnode *vp;
  147         IN int mode;
  148         IN struct ucred *cred;
  149         IN struct proc *p;
  150 };
  151 
  152 #
  153 #% getattr      vp      = = =
  154 #
  155 vop_getattr {
  156         IN struct vnode *vp;
  157         OUT struct vattr *vap;
  158         IN struct ucred *cred;
  159         IN struct proc *p;
  160 };
  161 
  162 #
  163 #% setattr      vp      L L L
  164 #
  165 vop_setattr {
  166         IN struct vnode *vp;
  167         IN struct vattr *vap;
  168         IN struct ucred *cred;
  169         IN struct proc *p;
  170 };
  171 
  172 #
  173 #% read         vp      L L L
  174 #
  175 vop_read {
  176         IN struct vnode *vp;
  177         INOUT struct uio *uio;
  178         IN int ioflag;
  179         IN struct ucred *cred;
  180 };
  181 
  182 #
  183 #% write        vp      L L L
  184 #
  185 vop_write {
  186         IN struct vnode *vp;
  187         INOUT struct uio *uio;
  188         IN int ioflag;
  189         IN struct ucred *cred;
  190 };
  191 
  192 #
  193 #% lease        vp      = = =
  194 #
  195 vop_lease {
  196         IN struct vnode *vp;
  197         IN struct proc *p;
  198         IN struct ucred *cred;
  199         IN int flag;
  200 };
  201 
  202 #
  203 #% ioctl        vp      U U U
  204 #
  205 vop_ioctl {
  206         IN struct vnode *vp;
  207         IN u_long command;
  208         IN caddr_t data;
  209         IN int fflag;
  210         IN struct ucred *cred;
  211         IN struct proc *p;
  212 };
  213 
  214 #
  215 #% poll vp      U U U
  216 #
  217 vop_poll {
  218         IN struct vnode *vp;
  219         IN int events;
  220         IN struct ucred *cred;
  221         IN struct proc *p;
  222 };
  223 
  224 #
  225 #% kqfilter     vp      U U U
  226 #
  227 vop_kqfilter {
  228         IN struct vnode *vp;
  229         IN struct knote *kn;
  230 };
  231 
  232 #
  233 #% revoke       vp      U U U
  234 #
  235 vop_revoke {
  236         IN struct vnode *vp;
  237         IN int flags;
  238 };
  239 
  240 #
  241 # XXX - not used
  242 #
  243 vop_mmap {
  244         IN struct vnode *vp;
  245         IN int fflags;
  246         IN struct ucred *cred;
  247         IN struct proc *p;
  248 };
  249 
  250 #
  251 #% fsync        vp      L L L
  252 #
  253 vop_fsync {
  254         IN struct vnode *vp;
  255         IN struct ucred *cred;
  256         IN int waitfor;
  257         IN struct proc *p;
  258 };
  259 
  260 #
  261 #% remove       dvp     L L L
  262 #% remove       vp      L L L
  263 #
  264 vop_remove {
  265         IN struct vnode *dvp;
  266         IN struct vnode *vp;
  267         IN struct componentname *cnp;
  268 };
  269 
  270 #
  271 #% link         tdvp    L L L
  272 #% link         vp      U U U
  273 #
  274 vop_link {
  275         IN struct vnode *tdvp;
  276         IN struct vnode *vp;
  277         IN struct componentname *cnp;
  278 };
  279 
  280 #
  281 #% rename       fdvp    U U U
  282 #% rename       fvp     U U U
  283 #% rename       tdvp    L U U
  284 #% rename       tvp     X U U
  285 #
  286 vop_rename {
  287         IN WILLRELE struct vnode *fdvp;
  288         IN WILLRELE struct vnode *fvp;
  289         IN struct componentname *fcnp;
  290         IN WILLRELE struct vnode *tdvp;
  291         IN WILLRELE struct vnode *tvp;
  292         IN struct componentname *tcnp;
  293 };
  294 
  295 #
  296 #% mkdir        dvp     L L L
  297 #% mkdir        vpp     - L -
  298 #
  299 vop_mkdir {
  300         IN struct vnode *dvp;
  301         OUT struct vnode **vpp;
  302         IN struct componentname *cnp;
  303         IN struct vattr *vap;
  304 };
  305 
  306 #
  307 #% rmdir        dvp     L L L
  308 #% rmdir        vp      L L L
  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     L L L
  318 #% symlink      vpp     - U -
  319 #
  320 vop_symlink {
  321         IN struct vnode *dvp;
  322         OUT struct vnode **vpp;
  323         IN struct componentname *cnp;
  324         IN struct vattr *vap;
  325         IN char *target;
  326 };
  327 
  328 #
  329 #% readdir      vp      L L L
  330 #
  331 vop_readdir {
  332         IN struct vnode *vp;
  333         INOUT struct uio *uio;
  334         IN struct ucred *cred;
  335         INOUT int *eofflag;
  336         OUT int *ncookies;
  337         INOUT u_long **cookies;
  338 };
  339 
  340 #
  341 #% readlink     vp      L L L
  342 #
  343 vop_readlink {
  344         IN struct vnode *vp;
  345         INOUT struct uio *uio;
  346         IN struct ucred *cred;
  347 };
  348 
  349 #
  350 #% inactive     vp      L U U
  351 #
  352 vop_inactive {
  353         IN struct vnode *vp;
  354         IN struct proc *p;
  355 };
  356 
  357 #
  358 #% reclaim      vp      U U U
  359 #
  360 vop_reclaim {
  361         IN struct vnode *vp;
  362         IN struct proc *p;
  363 };
  364 
  365 #
  366 #% lock         vp      ? ? ?
  367 #
  368 vop_lock {
  369         IN struct vnode *vp;
  370         IN int flags;
  371         IN struct proc *p;
  372 };
  373 
  374 #
  375 #% unlock       vp      L U L
  376 #
  377 vop_unlock {
  378         IN struct vnode *vp;
  379         IN int flags;
  380         IN struct proc *p;
  381 };
  382 
  383 #
  384 #% bmap         vp      L L L
  385 #% bmap         vpp     - U -
  386 #
  387 vop_bmap {
  388         IN struct vnode *vp;
  389         IN daddr_t bn;
  390         OUT struct vnode **vpp;
  391         IN daddr_t *bnp;
  392         OUT int *runp;
  393         OUT int *runb;
  394 };
  395 
  396 #
  397 #% strategy     vp      L L L
  398 #
  399 vop_strategy {
  400         IN struct vnode *vp;
  401         IN struct buf *bp;
  402 };
  403 
  404 #
  405 #% print        vp      = = =
  406 #
  407 vop_print {
  408         IN struct vnode *vp;
  409 };
  410 
  411 #
  412 #% pathconf     vp      L L L
  413 #
  414 vop_pathconf {
  415         IN struct vnode *vp;
  416         IN int name;
  417         OUT register_t *retval;
  418 };
  419 
  420 #
  421 #% advlock      vp      U U U
  422 #
  423 vop_advlock {
  424         IN struct vnode *vp;
  425         IN caddr_t id;
  426         IN int op;
  427         IN struct flock *fl;
  428         IN int flags;
  429 };
  430 
  431 #
  432 #% balloc       vp      L L L
  433 #
  434 vop_balloc {
  435         IN struct vnode *vp;
  436         IN off_t startoffset;
  437         IN int size;
  438         IN struct ucred *cred;
  439         IN int flags;
  440         OUT struct buf **bpp;
  441 };
  442 
  443 #
  444 #% reallocblks  vp      L L L
  445 #
  446 vop_reallocblks {
  447         IN struct vnode *vp;
  448         IN struct cluster_save *buflist;
  449 };
  450 
  451 #
  452 #% getpages     vp      L L L
  453 #
  454 vop_getpages {
  455         IN struct vnode *vp;
  456         IN vm_page_t *m;
  457         IN int count;
  458         IN int reqpage;
  459         IN vm_ooffset_t offset;
  460 };
  461 
  462 #
  463 #% putpages     vp      L L L
  464 #
  465 vop_putpages {
  466         IN struct vnode *vp;
  467         IN vm_page_t *m;
  468         IN int count;
  469         IN int sync;
  470         IN int *rtvals;
  471         IN vm_ooffset_t offset;
  472 };
  473 
  474 #
  475 #% freeblks     vp      - - -
  476 #
  477 # This call is used by the filesystem to release blocks back to 
  478 # device-driver.  This is useful if the driver has a lengthy 
  479 # erase handling or similar.
  480 #
  481 
  482 vop_freeblks {
  483         IN struct vnode *vp;
  484         IN daddr_t addr;
  485         IN daddr_t length;
  486 };
  487 
  488 #
  489 #% bwrite       vp      L L L
  490 #
  491 vop_bwrite {
  492         IN struct vnode *vp;
  493         IN struct buf *bp;
  494 };
  495 
  496 #
  497 #% getacl       vp      = = =
  498 #
  499 vop_getacl {
  500         IN struct vnode *vp;
  501         IN acl_type_t type;
  502         OUT struct acl *aclp;
  503         IN struct ucred *cred;
  504         IN struct proc *p;
  505 };
  506 
  507 #
  508 #% setacl       vp      L L L
  509 #
  510 vop_setacl {
  511         IN struct vnode *vp;
  512         IN acl_type_t type;
  513         IN struct acl *aclp;
  514         IN struct ucred *cred;
  515         IN struct proc *p;
  516 };
  517 
  518 #
  519 #% aclcheck     vp      = = =
  520 #
  521 vop_aclcheck {
  522         IN struct vnode *vp;
  523         IN acl_type_t type;
  524         IN struct acl *aclp;
  525         IN struct ucred *cred;
  526         IN struct proc *p;
  527 };
  528 
  529 #
  530 #% getextattr   vp      L L L
  531 #
  532 vop_getextattr {
  533         IN struct vnode *vp;
  534         IN char *name;
  535         INOUT struct uio *uio;
  536         IN struct ucred *cred;
  537         IN struct proc *p;
  538 };
  539 
  540 #
  541 #% setextattr   vp      L L L
  542 #
  543 vop_setextattr {
  544         IN struct vnode *vp;
  545         IN char *name;
  546         INOUT struct uio *uio;
  547         IN struct ucred *cred;
  548         IN struct proc *p;
  549 };
  550 
  551 #
  552 #% createvobject        vp      L L L
  553 #
  554 vop_createvobject {
  555         IN struct vnode *vp;
  556         IN struct ucred *cred;
  557         IN struct proc *p;
  558 };
  559 
  560 #
  561 #% destroyvobject       vp      L L L
  562 #
  563 vop_destroyvobject {
  564         IN struct vnode *vp;
  565 };
  566 
  567 #
  568 #% getvobject   vp      L L L
  569 #
  570 vop_getvobject {
  571         IN struct vnode *vp;
  572         OUT struct vm_object **objpp;
  573 };

Cache object: fd0e2c0743c19b1ec9601ae5e64db771


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