vnode_if.src revision 241025
1139804Simp#- 21541Srgrimes# Copyright (c) 1992, 1993 31541Srgrimes# The Regents of the University of California. All rights reserved. 41541Srgrimes# 51541Srgrimes# Redistribution and use in source and binary forms, with or without 61541Srgrimes# modification, are permitted provided that the following conditions 71541Srgrimes# are met: 81541Srgrimes# 1. Redistributions of source code must retain the above copyright 91541Srgrimes# notice, this list of conditions and the following disclaimer. 101541Srgrimes# 2. Redistributions in binary form must reproduce the above copyright 111541Srgrimes# notice, this list of conditions and the following disclaimer in the 121541Srgrimes# documentation and/or other materials provided with the distribution. 131541Srgrimes# 4. Neither the name of the University nor the names of its contributors 141541Srgrimes# may be used to endorse or promote products derived from this software 151541Srgrimes# without specific prior written permission. 161541Srgrimes# 171541Srgrimes# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 181541Srgrimes# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 191541Srgrimes# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 201541Srgrimes# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 211541Srgrimes# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 221541Srgrimes# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 231541Srgrimes# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 241541Srgrimes# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 251541Srgrimes# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 261541Srgrimes# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 271541Srgrimes# SUCH DAMAGE. 281541Srgrimes# 2922521Sdyson# @(#)vnode_if.src 8.12 (Berkeley) 5/14/95 3050477Speter# $FreeBSD: head/sys/kern/vnode_if.src 241025 2012-09-28 11:25:02Z kib $ 311541Srgrimes# 3222521Sdyson 3322521Sdyson# 34159082Sdds# Above each of the vop descriptors in lines starting with %% 35159082Sdds# is a specification of the locking protocol used by each vop call. 36159082Sdds# The first column is the name of the variable, the remaining three 37159082Sdds# columns are in, out and error respectively. The "in" column defines 38159082Sdds# the lock state on input, the "out" column defines the state on succesful 39159082Sdds# return, and the "error" column defines the locking state on error exit. 4022521Sdyson# 4122521Sdyson# The locking value can take the following values: 4254444Seivind# L: locked; not converted to type of lock. 4354444Seivind# A: any lock type. 4454444Seivind# S: locked with shared lock. 4554444Seivind# E: locked with exclusive lock for this process. 4654444Seivind# O: locked with exclusive lock for other process. 4745058Seivind# U: unlocked. 4822521Sdyson# -: not applicable. vnode does not yet (or no longer) exists. 4922521Sdyson# =: the same on input and output, may be either L or U. 5022521Sdyson# X: locked if not nil. 5122521Sdyson# 52116615Sse# The paramater named "vpp" is assumed to be always used with double 53229728Sjhb# indirection (**vpp) and that name is hard-coded in vnode_if.awk ! 54116615Sse# 55159082Sdds# Lines starting with %! specify a pre or post-condition function 56159082Sdds# to call before/after the vop call. 57159082Sdds# 58116615Sse# If other such parameters are introduced, they have to be added to 59116615Sse# the AWK script at the head of the definition of "add_debug_code()". 60116615Sse# 6122521Sdyson 6251679Seivindvop_islocked { 6351679Seivind IN struct vnode *vp; 6451679Seivind}; 6551679Seivind 66159082Sdds%% lookup dvp L ? ? 67159082Sdds%% lookup vpp - L - 68159082Sdds%! lookup pre vop_lookup_pre 69159082Sdds%! lookup post vop_lookup_post 70159082Sdds 7122521Sdyson# XXX - the lookup locking protocol defies simple description and depends 7222521Sdyson# on the flags and operation fields in the (cnp) structure. Note 7322521Sdyson# especially that *vpp may equal dvp and both may be locked. 74159082Sdds 751541Srgrimesvop_lookup { 761541Srgrimes IN struct vnode *dvp; 771541Srgrimes INOUT struct vnode **vpp; 781541Srgrimes IN struct componentname *cnp; 791541Srgrimes}; 801541Srgrimes 81159082Sdds%% cachedlookup dvp L ? ? 82159082Sdds%% cachedlookup vpp - L - 83159082Sdds 8428732Sphk# This must be an exact copy of lookup. See kern/vfs_cache.c for details. 85159082Sdds 8628732Sphkvop_cachedlookup { 8728732Sphk IN struct vnode *dvp; 8828732Sphk INOUT struct vnode **vpp; 8928732Sphk IN struct componentname *cnp; 9028732Sphk}; 9128732Sphk 92159082Sdds%% create dvp E E E 93159082Sdds%% create vpp - L - 94159082Sdds%! create post vop_create_post 95159082Sdds 961541Srgrimesvop_create { 9735823Smsmith IN struct vnode *dvp; 981541Srgrimes OUT struct vnode **vpp; 991541Srgrimes IN struct componentname *cnp; 1001541Srgrimes IN struct vattr *vap; 1011541Srgrimes}; 1021541Srgrimes 103159082Sdds 104159082Sdds%% whiteout dvp E E E 105159082Sdds 10622521Sdysonvop_whiteout { 10735823Smsmith IN struct vnode *dvp; 10822521Sdyson IN struct componentname *cnp; 10922521Sdyson IN int flags; 11022521Sdyson}; 11122521Sdyson 112159082Sdds 113159082Sdds%% mknod dvp E E E 114159082Sdds%% mknod vpp - L - 115159082Sdds%! mknod post vop_mknod_post 116159082Sdds 1171541Srgrimesvop_mknod { 11835823Smsmith IN struct vnode *dvp; 11953101Seivind OUT struct vnode **vpp; 1201541Srgrimes IN struct componentname *cnp; 1211541Srgrimes IN struct vattr *vap; 1221541Srgrimes}; 1231541Srgrimes 124159082Sdds 125159082Sdds%% open vp L L L 126159082Sdds 1271541Srgrimesvop_open { 1281541Srgrimes IN struct vnode *vp; 1291541Srgrimes IN int mode; 1301541Srgrimes IN struct ucred *cred; 13183366Sjulian IN struct thread *td; 132170152Skib IN struct file *fp; 1331541Srgrimes}; 1341541Srgrimes 135159082Sdds 136189696Sjhb%% close vp L L L 137159082Sdds 1381541Srgrimesvop_close { 1391541Srgrimes IN struct vnode *vp; 1401541Srgrimes IN int fflag; 1411541Srgrimes IN struct ucred *cred; 14283366Sjulian IN struct thread *td; 1431541Srgrimes}; 1441541Srgrimes 145159082Sdds 146159082Sdds%% access vp L L L 147159082Sdds 1481541Srgrimesvop_access { 1491541Srgrimes IN struct vnode *vp; 150184413Strasz IN accmode_t accmode; 1511541Srgrimes IN struct ucred *cred; 15283366Sjulian IN struct thread *td; 1531541Srgrimes}; 1541541Srgrimes 155159082Sdds 156193092Strasz%% accessx vp L L L 157193092Strasz 158193092Straszvop_accessx { 159193092Strasz IN struct vnode *vp; 160193092Strasz IN accmode_t accmode; 161193092Strasz IN struct ucred *cred; 162193092Strasz IN struct thread *td; 163193092Strasz}; 164193092Strasz 165193092Strasz 166159082Sdds%% getattr vp L L L 167159082Sdds 1681541Srgrimesvop_getattr { 1691541Srgrimes IN struct vnode *vp; 17054803Srwatson OUT struct vattr *vap; 1711541Srgrimes IN struct ucred *cred; 1721541Srgrimes}; 1731541Srgrimes 174159082Sdds 175159082Sdds%% setattr vp E E E 176159082Sdds%! setattr post vop_setattr_post 177159082Sdds 1781541Srgrimesvop_setattr { 1791541Srgrimes IN struct vnode *vp; 1801541Srgrimes IN struct vattr *vap; 1811541Srgrimes IN struct ucred *cred; 1821541Srgrimes}; 1831541Srgrimes 184187526Sjhb%% markatime vp L L L 185159082Sdds 186187526Sjhbvop_markatime { 187187526Sjhb IN struct vnode *vp; 188187526Sjhb}; 189187526Sjhb 190159082Sdds%% read vp L L L 191159082Sdds 1921541Srgrimesvop_read { 1931541Srgrimes IN struct vnode *vp; 1941541Srgrimes INOUT struct uio *uio; 1951541Srgrimes IN int ioflag; 1961541Srgrimes IN struct ucred *cred; 1971541Srgrimes}; 1981541Srgrimes 199159082Sdds 200193762Sps%% write vp L L L 201159082Sdds%! write pre VOP_WRITE_PRE 202159082Sdds%! write post VOP_WRITE_POST 203159082Sdds 2041541Srgrimesvop_write { 2051541Srgrimes IN struct vnode *vp; 2061541Srgrimes INOUT struct uio *uio; 2071541Srgrimes IN int ioflag; 2081541Srgrimes IN struct ucred *cred; 2091541Srgrimes}; 2101541Srgrimes 211159082Sdds 212159082Sdds%% ioctl vp U U U 213159082Sdds 2141541Srgrimesvop_ioctl { 2151541Srgrimes IN struct vnode *vp; 21622521Sdyson IN u_long command; 217153400Sdes IN void *data; 2181541Srgrimes IN int fflag; 2191541Srgrimes IN struct ucred *cred; 22083366Sjulian IN struct thread *td; 2211541Srgrimes}; 2221541Srgrimes 223159082Sdds 224184377Sjhb%% poll vp U U U 225159082Sdds 22629353Spetervop_poll { 2271541Srgrimes IN struct vnode *vp; 22829353Speter IN int events; 2291541Srgrimes IN struct ucred *cred; 23083366Sjulian IN struct thread *td; 2311541Srgrimes}; 2321541Srgrimes 233159082Sdds 234159082Sdds%% kqfilter vp U U U 235159082Sdds 23672521Sjlemonvop_kqfilter { 23772521Sjlemon IN struct vnode *vp; 23872521Sjlemon IN struct knote *kn; 23972521Sjlemon}; 24072521Sjlemon 241159082Sdds 242159082Sdds%% revoke vp L L L 243159082Sdds 24422521Sdysonvop_revoke { 24522521Sdyson IN struct vnode *vp; 24622521Sdyson IN int flags; 24722521Sdyson}; 24822521Sdyson 249159082Sdds 250194019Sps%% fsync vp L L L 251159082Sdds 2521541Srgrimesvop_fsync { 2531541Srgrimes IN struct vnode *vp; 2541541Srgrimes IN int waitfor; 25583366Sjulian IN struct thread *td; 2561541Srgrimes}; 2571541Srgrimes 258159082Sdds 259159082Sdds%% remove dvp E E E 260159082Sdds%% remove vp E E E 261159082Sdds%! remove post vop_remove_post 262159082Sdds 2631541Srgrimesvop_remove { 26435823Smsmith IN struct vnode *dvp; 26535823Smsmith IN struct vnode *vp; 2661541Srgrimes IN struct componentname *cnp; 2671541Srgrimes}; 2681541Srgrimes 269159082Sdds 270159082Sdds%% link tdvp E E E 271159082Sdds%% link vp E E E 272159082Sdds%! link post vop_link_post 273159082Sdds 2749842Sdgvop_link { 27535823Smsmith IN struct vnode *tdvp; 2769842Sdg IN struct vnode *vp; 2779842Sdg IN struct componentname *cnp; 2789842Sdg}; 2791541Srgrimes 280159082Sdds 281159082Sdds%! rename pre vop_rename_pre 282159082Sdds%! rename post vop_rename_post 283159082Sdds 2841541Srgrimesvop_rename { 2851541Srgrimes IN WILLRELE struct vnode *fdvp; 2861541Srgrimes IN WILLRELE struct vnode *fvp; 2871541Srgrimes IN struct componentname *fcnp; 2881541Srgrimes IN WILLRELE struct vnode *tdvp; 2891541Srgrimes IN WILLRELE struct vnode *tvp; 2901541Srgrimes IN struct componentname *tcnp; 2911541Srgrimes}; 2921541Srgrimes 293159082Sdds 294159082Sdds%% mkdir dvp E E E 295159082Sdds%% mkdir vpp - E - 296159082Sdds%! mkdir post vop_mkdir_post 297159082Sdds 2981541Srgrimesvop_mkdir { 29935823Smsmith IN struct vnode *dvp; 3001541Srgrimes OUT struct vnode **vpp; 3011541Srgrimes IN struct componentname *cnp; 3021541Srgrimes IN struct vattr *vap; 3031541Srgrimes}; 3041541Srgrimes 305159082Sdds 306159082Sdds%% rmdir dvp E E E 307159082Sdds%% rmdir vp E E E 308159082Sdds%! rmdir post vop_rmdir_post 309159082Sdds 3101541Srgrimesvop_rmdir { 31135823Smsmith IN struct vnode *dvp; 31235823Smsmith IN struct vnode *vp; 3131541Srgrimes IN struct componentname *cnp; 3141541Srgrimes}; 3151541Srgrimes 316159082Sdds 317159082Sdds%% symlink dvp E E E 318159082Sdds%% symlink vpp - E - 319159082Sdds%! symlink post vop_symlink_post 320159082Sdds 3211541Srgrimesvop_symlink { 32235823Smsmith IN struct vnode *dvp; 32353131Seivind OUT struct vnode **vpp; 3241541Srgrimes IN struct componentname *cnp; 3251541Srgrimes IN struct vattr *vap; 3261541Srgrimes IN char *target; 3271541Srgrimes}; 3281541Srgrimes 329159082Sdds 330159082Sdds%% readdir vp L L L 331159082Sdds 3321541Srgrimesvop_readdir { 3331541Srgrimes IN struct vnode *vp; 3341541Srgrimes INOUT struct uio *uio; 3351541Srgrimes IN struct ucred *cred; 3363167Sdfr INOUT int *eofflag; 33722521Sdyson OUT int *ncookies; 33822521Sdyson INOUT u_long **cookies; 3391541Srgrimes}; 3401541Srgrimes 341159082Sdds 342159082Sdds%% readlink vp L L L 343159082Sdds 3441541Srgrimesvop_readlink { 3451541Srgrimes IN struct vnode *vp; 3461541Srgrimes INOUT struct uio *uio; 3471541Srgrimes IN struct ucred *cred; 3481541Srgrimes}; 3491541Srgrimes 350159082Sdds 351159082Sdds%% inactive vp E E E 352159082Sdds 3531541Srgrimesvop_inactive { 3541541Srgrimes IN struct vnode *vp; 35583366Sjulian IN struct thread *td; 3561541Srgrimes}; 3571541Srgrimes 358159082Sdds 359159082Sdds%% reclaim vp E E E 360159082Sdds 3611541Srgrimesvop_reclaim { 3621541Srgrimes IN struct vnode *vp; 36383366Sjulian IN struct thread *td; 3641541Srgrimes}; 3651541Srgrimes 366159082Sdds 367169671Skib%! lock1 pre vop_lock_pre 368169671Skib%! lock1 post vop_lock_post 369159082Sdds 370169671Skibvop_lock1 { 3711541Srgrimes IN struct vnode *vp; 37222521Sdyson IN int flags; 373164248Skmacy IN char *file; 374164248Skmacy IN int line; 3751541Srgrimes}; 3761541Srgrimes 377159082Sdds 378159082Sdds%! unlock pre vop_unlock_pre 379159082Sdds%! unlock post vop_unlock_post 380159082Sdds 3811541Srgrimesvop_unlock { 3821541Srgrimes IN struct vnode *vp; 38322521Sdyson IN int flags; 3841541Srgrimes}; 3851541Srgrimes 386159082Sdds 387159082Sdds%% bmap vp L L L 388159082Sdds 3891541Srgrimesvop_bmap { 3901541Srgrimes IN struct vnode *vp; 39196572Sphk IN daddr_t bn; 392137726Sphk OUT struct bufobj **bop; 39396572Sphk IN daddr_t *bnp; 3941541Srgrimes OUT int *runp; 39510551Sdyson OUT int *runb; 3961541Srgrimes}; 3971541Srgrimes 398159082Sdds 399159082Sdds%% strategy vp L L L 400159082Sdds%! strategy pre vop_strategy_pre 401159082Sdds 40237384Sjulianvop_strategy { 40337384Sjulian IN struct vnode *vp; 40437384Sjulian IN struct buf *bp; 40537384Sjulian}; 4061541Srgrimes 407159082Sdds 408159082Sdds%% getwritemount vp = = = 409159082Sdds 41062976Smckusickvop_getwritemount { 41162976Smckusick IN struct vnode *vp; 41262976Smckusick OUT struct mount **mpp; 41362976Smckusick}; 41462976Smckusick 415159082Sdds 416176590Skib%% print vp - - - 417159082Sdds 4181541Srgrimesvop_print { 4191541Srgrimes IN struct vnode *vp; 4201541Srgrimes}; 4211541Srgrimes 422159082Sdds 423159082Sdds%% pathconf vp L L L 424159082Sdds 4251541Srgrimesvop_pathconf { 4261541Srgrimes IN struct vnode *vp; 4271541Srgrimes IN int name; 42822521Sdyson OUT register_t *retval; 4291541Srgrimes}; 4301541Srgrimes 431159082Sdds 432159082Sdds%% advlock vp U U U 433159082Sdds 4341541Srgrimesvop_advlock { 4351541Srgrimes IN struct vnode *vp; 436153400Sdes IN void *id; 4371541Srgrimes IN int op; 4381541Srgrimes IN struct flock *fl; 4391541Srgrimes IN int flags; 4401541Srgrimes}; 4411541Srgrimes 442159082Sdds 443177633Sdfr%% advlockasync vp U U U 444177633Sdfr 445177633Sdfrvop_advlockasync { 446177633Sdfr IN struct vnode *vp; 447177633Sdfr IN void *id; 448177633Sdfr IN int op; 449177633Sdfr IN struct flock *fl; 450177633Sdfr IN int flags; 451177633Sdfr IN struct task *task; 452177633Sdfr INOUT void **cookiep; 453177633Sdfr}; 454177633Sdfr 455177633Sdfr 456208003Szml%% advlockpurge vp E E E 457208003Szml 458208003Szmlvop_advlockpurge { 459208003Szml IN struct vnode *vp; 460208003Szml}; 461208003Szml 462208003Szml 463159082Sdds%% reallocblks vp E E E 464159082Sdds 4651541Srgrimesvop_reallocblks { 4661541Srgrimes IN struct vnode *vp; 4671541Srgrimes IN struct cluster_save *buflist; 4681541Srgrimes}; 4691541Srgrimes 470159082Sdds 471159082Sdds%% getpages vp L L L 472159082Sdds 47310551Sdysonvop_getpages { 47410551Sdyson IN struct vnode *vp; 47510551Sdyson IN vm_page_t *m; 47610551Sdyson IN int count; 47710551Sdyson IN int reqpage; 47812767Sdyson IN vm_ooffset_t offset; 47910551Sdyson}; 48010551Sdyson 481159082Sdds 482159082Sdds%% putpages vp E E E 483159082Sdds 48410551Sdysonvop_putpages { 48510551Sdyson IN struct vnode *vp; 48610551Sdyson IN vm_page_t *m; 48710551Sdyson IN int count; 48810551Sdyson IN int sync; 48910551Sdyson IN int *rtvals; 49012767Sdyson IN vm_ooffset_t offset; 49110551Sdyson}; 49211704Sdyson 493159082Sdds 494159082Sdds%% getacl vp L L L 495159082Sdds 49654803Srwatsonvop_getacl { 49754803Srwatson IN struct vnode *vp; 49854803Srwatson IN acl_type_t type; 49954803Srwatson OUT struct acl *aclp; 50054803Srwatson IN struct ucred *cred; 50183366Sjulian IN struct thread *td; 50254803Srwatson}; 50354803Srwatson 504159082Sdds 505159082Sdds%% setacl vp E E E 506159082Sdds 50754803Srwatsonvop_setacl { 50854803Srwatson IN struct vnode *vp; 50954803Srwatson IN acl_type_t type; 51054803Srwatson IN struct acl *aclp; 51154803Srwatson IN struct ucred *cred; 51283366Sjulian IN struct thread *td; 51354803Srwatson}; 51454803Srwatson 515159082Sdds 516159082Sdds%% aclcheck vp = = = 517159082Sdds 51854803Srwatsonvop_aclcheck { 51954803Srwatson IN struct vnode *vp; 52054803Srwatson IN acl_type_t type; 52154803Srwatson IN struct acl *aclp; 52254803Srwatson IN struct ucred *cred; 52383366Sjulian IN struct thread *td; 52454803Srwatson}; 52554803Srwatson 526159082Sdds 527159082Sdds%% closeextattr vp L L L 528159082Sdds 529102990Sphkvop_closeextattr { 530102990Sphk IN struct vnode *vp; 531102990Sphk IN int commit; 532102990Sphk IN struct ucred *cred; 533102990Sphk IN struct thread *td; 534102990Sphk}; 535102990Sphk 536159082Sdds 537159082Sdds%% getextattr vp L L L 538159082Sdds 53954803Srwatsonvop_getextattr { 54054803Srwatson IN struct vnode *vp; 54174437Srwatson IN int attrnamespace; 54265119Srwatson IN const char *name; 54354803Srwatson INOUT struct uio *uio; 54490448Srwatson OUT size_t *size; 54554803Srwatson IN struct ucred *cred; 54683366Sjulian IN struct thread *td; 54754803Srwatson}; 54854803Srwatson 549159082Sdds 550159082Sdds%% listextattr vp L L L 551159082Sdds 552115867Srwatsonvop_listextattr { 553115867Srwatson IN struct vnode *vp; 554115867Srwatson IN int attrnamespace; 555115867Srwatson INOUT struct uio *uio; 556115867Srwatson OUT size_t *size; 557115867Srwatson IN struct ucred *cred; 558115867Srwatson IN struct thread *td; 559115867Srwatson}; 560115867Srwatson 561159082Sdds 562159082Sdds%% openextattr vp L L L 563159082Sdds 564102990Sphkvop_openextattr { 565102990Sphk IN struct vnode *vp; 566102990Sphk IN struct ucred *cred; 567102990Sphk IN struct thread *td; 568102990Sphk}; 569102990Sphk 570159082Sdds 571159082Sdds%% deleteextattr vp E E E 572228849Sjhb%! deleteextattr post vop_deleteextattr_post 573159082Sdds 574118131Srwatsonvop_deleteextattr { 575116698Srwatson IN struct vnode *vp; 576116698Srwatson IN int attrnamespace; 577116698Srwatson IN const char *name; 578116698Srwatson IN struct ucred *cred; 579116698Srwatson IN struct thread *td; 580116698Srwatson}; 581116698Srwatson 582159082Sdds 583159082Sdds%% setextattr vp E E E 584228849Sjhb%! setextattr post vop_setextattr_post 585159082Sdds 58654803Srwatsonvop_setextattr { 58754803Srwatson IN struct vnode *vp; 58874437Srwatson IN int attrnamespace; 58965119Srwatson IN const char *name; 59054803Srwatson INOUT struct uio *uio; 59154803Srwatson IN struct ucred *cred; 59283366Sjulian IN struct thread *td; 59354803Srwatson}; 59465770Sbp 595159082Sdds 596159082Sdds%% setlabel vp E E E 597159082Sdds 598100984Srwatsonvop_setlabel { 599100984Srwatson IN struct vnode *vp; 600100984Srwatson IN struct label *label; 601100984Srwatson IN struct ucred *cred; 602100984Srwatson IN struct thread *td; 603100984Srwatson}; 604166774Spjd 605166774Spjd 606184377Sjhb%% vptofh vp = = = 607166774Spjd 608166774Spjdvop_vptofh { 609166774Spjd IN struct vnode *vp; 610166774Spjd IN struct fid *fhp; 611166774Spjd}; 612185956Smarcus 613220791Smdf 614185956Smarcus%% vptocnp vp L L L 615185956Smarcus%% vptocnp vpp - U - 616185956Smarcus 617185956Smarcusvop_vptocnp { 618185956Smarcus IN struct vnode *vp; 619185956Smarcus OUT struct vnode **vpp; 620194601Skib IN struct ucred *cred; 621185956Smarcus INOUT char *buf; 622185956Smarcus INOUT int *buflen; 623185956Smarcus}; 624220791Smdf 625220791Smdf 626220846Smdf%% allocate vp E E E 627220791Smdf 628220791Smdfvop_allocate { 629220791Smdf IN struct vnode *vp; 630221836Smdf INOUT off_t *offset; 631221836Smdf INOUT off_t *len; 632220791Smdf}; 633227070Sjhb 634227070Sjhb%% advise vp U U U 635227070Sjhb 636227070Sjhbvop_advise { 637227070Sjhb IN struct vnode *vp; 638227070Sjhb IN off_t start; 639227070Sjhb IN off_t end; 640227070Sjhb IN int advice; 641227070Sjhb}; 642229728Sjhb 643232317Strociny%% unp_bind vp E E E 644232317Strociny 645232317Strocinyvop_unp_bind { 646232317Strociny IN struct vnode *vp; 647232317Strociny IN struct socket *socket; 648232317Strociny}; 649232317Strociny 650232317Strociny%% unp_connect vp L L L 651232317Strociny 652232317Strocinyvop_unp_connect { 653232317Strociny IN struct vnode *vp; 654232317Strociny OUT struct socket **socket; 655232317Strociny}; 656232317Strociny 657232317Strociny%% unp_detach vp = = = 658232317Strociny 659232317Strocinyvop_unp_detach { 660232317Strociny IN struct vnode *vp; 661232317Strociny}; 662232317Strociny 663241025Skib%% is_text vp L L L 664241025Skib 665241025Skibvop_is_text { 666241025Skib IN struct vnode *vp; 667241025Skib}; 668241025Skib 669241025Skib%% set_text vp E E E 670241025Skib 671241025Skibvop_set_text { 672241025Skib IN struct vnode *vp; 673241025Skib}; 674241025Skib 675241025Skib%% vop_unset_text vp E E E 676241025Skib 677241025Skibvop_unset_text { 678241025Skib IN struct vnode *vp; 679241025Skib}; 680241025Skib 681229728Sjhb# The VOPs below are spares at the end of the table to allow new VOPs to be 682229728Sjhb# added in stable branches without breaking the KBI. New VOPs in HEAD should 683229728Sjhb# be added above these spares. When merging a new VOP to a stable branch, 684229728Sjhb# the new VOP should replace one of the spares. 685229728Sjhb 686229728Sjhbvop_spare1 { 687229728Sjhb IN struct vnode *vp; 688229728Sjhb}; 689229728Sjhb 690229728Sjhbvop_spare2 { 691229728Sjhb IN struct vnode *vp; 692229728Sjhb}; 693229728Sjhb 694229728Sjhbvop_spare3 { 695229728Sjhb IN struct vnode *vp; 696229728Sjhb}; 697229728Sjhb 698229728Sjhbvop_spare4 { 699229728Sjhb IN struct vnode *vp; 700229728Sjhb}; 701229728Sjhb 702229728Sjhbvop_spare5 { 703229728Sjhb IN struct vnode *vp; 704229728Sjhb}; 705