From NetBSD: vnode_if.[ch] made machine independent.
authormickey <mickey@openbsd.org>
Tue, 26 Mar 1996 15:09:28 +0000 (15:09 +0000)
committermickey <mickey@openbsd.org>
Tue, 26 Mar 1996 15:09:28 +0000 (15:09 +0000)
very usefull (for <sys/vnode.h> inclusion).
from the other side this is really machine independent ...
tested w/ i386, but should not cause errors w/ other arch's.
pls, test it (don't forget to reconfig kernel ;)

18 files changed:
sys/arch/alpha/conf/Makefile.alpha
sys/arch/amiga/conf/Makefile.amiga
sys/arch/atari/conf/Makefile.atari
sys/arch/hp300/conf/Makefile.hp300
sys/arch/i386/conf/Makefile.i386
sys/arch/mac68k/conf/Makefile.mac68k
sys/arch/mvme68k/conf/Makefile.mvme68k
sys/arch/mvme88k/conf/Makefile.m88k
sys/arch/pc532/conf/Makefile.pc532
sys/arch/pica/conf/Makefile.pica
sys/arch/pmax/conf/Makefile.pmax
sys/conf/files
sys/conf/files.oldconf
sys/kern/Makefile
sys/kern/makesyscalls.sh
sys/kern/vnode_if.c [new file with mode: 0644]
sys/kern/vnode_if.sh
sys/sys/vnode_if.h [new file with mode: 0644]

index e6dd45b..b098462 100644 (file)
@@ -84,7 +84,7 @@ LDX=-X
 LDX=-x
 .endif
 LDFLAGS= ${LDX} -G 4 -N -e __start -Ttext fffffc0000230000
-SYSTEM_OBJ=    locore.o vnode_if.o ${OBJS} param.o ioconf.o ${LIBKERN} \
+SYSTEM_OBJ=    locore.o ${OBJS} param.o ioconf.o ${LIBKERN} \
                ${LIBCOMPAT}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
 SYSTEM_LD_HEAD=        @echo loading $@; rm -f $@
@@ -108,7 +108,7 @@ newvers:
        ${CC} ${CFLAGS} -c vers.c
 
 clean::
-       rm -f eddep *netbsd netbsd.gdb tags tags1 vnode_if.[ch] *.[io] \
+       rm -f eddep *netbsd netbsd.gdb tags tags1 *.[io] \
                [a-z]*.s Errs errs linterrs makelinks genassym
 
 
@@ -129,7 +129,7 @@ genassym: genassym.o
 genassym.o: ${ALPHA}/alpha/genassym.c
        ${CC} -c ${CFLAGS} ${PARAM} $<
 
-SRCS= ${CFILES} ${ALPHA}/alpha/genassym.c ioconf.c param.c vnode_if.c
+SRCS= ${CFILES} ${ALPHA}/alpha/genassym.c ioconf.c param.c
 depend: .depend
 .depend: ${SRCS} assym.s
        mkdep ${COPTS} ${SRCS}
@@ -158,7 +158,4 @@ param.c: $S/conf/param.c
 param.o: param.c Makefile
        ${CC} -c ${CFLAGS} ${PARAM} param.c
 
-vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-
 %RULES
index 5c55011..9e28c72 100644 (file)
@@ -90,7 +90,7 @@ NORMAL_G=     gspa < $< | gspahextoc > $*.c; ${CC} -c ${CFLAGS} ${PROF} $*.c
 #      ${SYSTEM_LD} swapxxx.o
 #      ${SYSTEM_LD_TAIL}
 SYSTEM_OBJ=    locore.o ${FPSP} \
-               vnode_if.o param.o ioconf.o ${OBJS} ${LIBKERN} ${LIBCOMPAT}
+               param.o ioconf.o ${OBJS} ${LIBKERN} ${LIBCOMPAT}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
 SYSTEM_LD_HEAD=        @rm -f $@
 SYSTEM_LD=     @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_OBJ}' vers.o; \
@@ -118,9 +118,6 @@ genassym: genassym.o
 genassym.o: ${AMIGA}/amiga/genassym.c
        ${NORMAL_C_C}
 
-vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-
 param.c: $S/conf/param.c
        rm -f param.c
        cp $S/conf/param.c .
@@ -137,7 +134,7 @@ newvers: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
 
 
 clean::
-       rm -f eddep *netbsd netbsd.gdb tags vnode_if.[ch] *.[io] [a-z]*.s \
+       rm -f eddep *netbsd netbsd.gdb tags *.[io] [a-z]*.s \
            [Ee]rrs linterrs makelinks genassym genassym.o assym.h
 
 lint:
@@ -158,11 +155,11 @@ links:
        sh makelinks && rm -f dontlink
 
 SRCS=  ${AMIGA}/amiga/locore.s \
-       vnode_if.c param.c ioconf.c ${CFILES} ${SFILES}
+       param.c ioconf.c ${CFILES} ${SFILES}
 depend: .depend
-.depend: ${SRCS} assym.h vnode_if.h param.c
+.depend: ${SRCS} assym.h param.c
        mkdep ${AFLAGS} ${CPPFLAGS} ${AMIGA}/amiga/locore.s
-       mkdep -a ${CFLAGS} ${CPPFLAGS} vnode_if.c param.c ioconf.c ${CFILES}
+       mkdep -a ${CFLAGS} ${CPPFLAGS} param.c ioconf.c ${CFILES}
        mkdep -a ${AFLAGS} ${CPPFLAGS} ${SFILES}
        mkdep -a ${CFLAGS} ${CPPFLAGS} ${PARAM} ${AMIGA}/amiga/genassym.c
 
index d83a9cc..a2259c2 100644 (file)
@@ -82,7 +82,7 @@ NORMAL_S_C=   ${CPP} ${COPTS} ${PARAM} $< | ${AS} -o $@
 #      ${SYSTEM_LD_HEAD}
 #      ${SYSTEM_LD} swapxxx.o
 #      ${SYSTEM_LD_TAIL}
-SYSTEM_OBJ=    locore.o ${FPSP} vnode_if.o ${OBJS} param.o ioconf.o \
+SYSTEM_OBJ=    locore.o ${FPSP} ${OBJS} param.o ioconf.o \
                ${LIBKERN} ${LIBCOMPAT}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
 SYSTEM_LD_HEAD=        rm -f $@
@@ -107,7 +107,7 @@ newvers:
 
 clean::
        rm -f eddep *netbsd netbsd.gdb tags *.o locore.i [a-z]*.s \
-               vnode_if.[ch] Errs errs linterrs makelinks genassym
+               Errs errs linterrs makelinks genassym
 
 lint: /tmp param.c
        @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} -UKGDB \
@@ -140,7 +140,7 @@ genassym:
        ${CC} -static ${INCLUDES} ${IDENT} ${PARAM} -Dmc68020 -Datari \
            -o genassym ${ATARI}/atari/genassym.c
 
-depend: assym.s param.c vnode_if.h
+depend: assym.s param.c
        mkdep ${COPTS} ${CFILES} ioconf.c param.c
        mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${ATARI}/atari/genassym.c
 
@@ -164,7 +164,5 @@ param.c: $S/conf/param.c
 
 param.o: param.c Makefile
        ${CC} -c ${CFLAGS} ${PARAM} param.c
-vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
 
 %RULES
index d95395b..807bd59 100644 (file)
@@ -85,7 +85,7 @@ NORMAL_S_C=   ${CPP} ${COPTS} ${PARAM} $< | ${AS} -o $@
 #      ${SYSTEM_LD_HEAD}
 #      ${SYSTEM_LD} swapxxx.o
 #      ${SYSTEM_LD_TAIL}
-SYSTEM_OBJ=    locore.o ${FPSP} vnode_if.o ${OBJS} param.o ioconf.o \
+SYSTEM_OBJ=    locore.o ${FPSP} ${OBJS} param.o ioconf.o \
                ${LIBKERN} ${LIBCOMPAT}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
 SYSTEM_LD_HEAD=        rm -f $@
@@ -107,7 +107,7 @@ vers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
        ${CC} ${CFLAGS} -c vers.c
 
 clean::
-       rm -f eddep *netbsd netbsd.gdb tags vnode_if.[ch] *.o locore.i \
+       rm -f eddep *netbsd netbsd.gdb tags *.o locore.i \
                [a-z]*.s [Ee]rrs linterrs makelinks genassym
 
 lint: /tmp param.c
@@ -142,7 +142,7 @@ genassym: ${HP300}/hp300/genassym.c Makefile
        ${CC} ${INCLUDES} ${IDENT} ${PARAM} -Dmc68020 -Dhp300 -o genassym \
            ${HP300}/hp300/genassym.c
 
-depend: assym.s param.c vnode_if.h
+depend: assym.s param.c
        mkdep ${COPTS} ${CFILES} ioconf.c param.c
        mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${HP300}/hp300/genassym.c
 
@@ -167,7 +167,4 @@ param.c: $S/conf/param.c
 param.o: param.c Makefile
        ${CC} -c ${CFLAGS} ${PARAM} param.c
 
-vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-
 %RULES
index 364cf3c..28565c7 100644 (file)
@@ -81,7 +81,7 @@ NORMAL_S_C=   ${CC} ${AFLAGS} ${CPPFLAGS} ${PARAM} -c $<
 #      ${SYSTEM_LD} swapxxx.o
 #      ${SYSTEM_LD_TAIL}
 SYSTEM_OBJ=    locore.o \
-               vnode_if.o param.o ioconf.o ${OBJS} ${LIBKERN} ${LIBCOMPAT}
+               param.o ioconf.o ${OBJS} ${LIBKERN} ${LIBCOMPAT}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
 SYSTEM_LD_HEAD=        rm -f $@
 SYSTEM_LD=     @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_OBJ}' vers.o; \
@@ -109,9 +109,6 @@ genassym: genassym.o
 genassym.o: ${I386}/i386/genassym.c
        ${NORMAL_C_C}
 
-vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-
 param.c: $S/conf/param.c
        rm -f param.c
        cp $S/conf/param.c .
@@ -128,7 +125,7 @@ newvers: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
 
 
 clean::
-       rm -f eddep *netbsd netbsd.gdb tags vnode_if.[ch] *.[io] [a-z]*.s \
+       rm -f eddep *netbsd netbsd.gdb tags *.[io] [a-z]*.s \
            [Ee]rrs linterrs makelinks genassym genassym.o assym.h
 
 lint:
@@ -149,11 +146,11 @@ links:
        sh makelinks && rm -f dontlink
 
 SRCS=  ${I386}/i386/locore.s \
-       vnode_if.c param.c ioconf.c ${CFILES} ${SFILES}
+       param.c ioconf.c ${CFILES} ${SFILES}
 depend: .depend
-.depend: ${SRCS} assym.h vnode_if.h param.c
+.depend: ${SRCS} assym.h param.c
        mkdep ${AFLAGS} ${CPPFLAGS} ${I386}/i386/locore.s
-       mkdep -a ${CFLAGS} ${CPPFLAGS} vnode_if.c param.c ioconf.c ${CFILES}
+       mkdep -a ${CFLAGS} ${CPPFLAGS} param.c ioconf.c ${CFILES}
        mkdep -a ${AFLAGS} ${CPPFLAGS} ${SFILES}
        mkdep -a ${CFLAGS} ${CPPFLAGS} ${PARAM} ${I386}/i386/genassym.c
 
index 16e28f4..cfedb74 100644 (file)
@@ -84,7 +84,7 @@ NORMAL_S_C=   ${CC} ${AFLAGS} ${CPPFLAGS} ${PARAM} -c $<
 #      ${SYSTEM_LD} swapxxx.o
 #      ${SYSTEM_LD_TAIL}
 SYSTEM_OBJ=    locore.o ${FPSP} \
-               vnode_if.o param.o ioconf.o ${OBJS} ${LIBKERN} ${LIBCOMPAT}
+               param.o ioconf.o ${OBJS} ${LIBKERN} ${LIBCOMPAT}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
 SYSTEM_LD_HEAD=        @rm -f $@
 SYSTEM_LD=     @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_OBJ}' vers.o; \
@@ -112,9 +112,6 @@ genassym: genassym.o
 genassym.o: ${MAC68K}/mac68k/genassym.c
        ${NORMAL_C_C}
 
-vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-
 param.c: $S/conf/param.c
        rm -f param.c
        cp $S/conf/param.c .
@@ -131,7 +128,7 @@ newvers: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
 
 
 clean::
-       rm -f eddep *bsd bsd.gdb tags vnode_if.[ch] *.[io] [a-z]*.s \
+       rm -f eddep *bsd bsd.gdb tags *.[io] [a-z]*.s \
            [Ee]rrs linterrs makelinks genassym genassym.o assym.h
 
 lint:
@@ -152,11 +149,11 @@ links:
        sh makelinks && rm -f dontlink
 
 SRCS=  ${MAC68K}/mac68k/locore.s \
-       vnode_if.c param.c ioconf.c ${CFILES} ${SFILES}
+       param.c ioconf.c ${CFILES} ${SFILES}
 depend: .depend
-.depend: ${SRCS} assym.h vnode_if.h param.c
+.depend: ${SRCS} assym.h param.c
        mkdep ${AFLAGS} ${CPPFLAGS} ${MAC68K}/mac68k/locore.s
-       mkdep -a ${CFLAGS} ${CPPFLAGS} vnode_if.c param.c ioconf.c ${CFILES}
+       mkdep -a ${CFLAGS} ${CPPFLAGS} param.c ioconf.c ${CFILES}
        mkdep -a ${AFLAGS} ${CPPFLAGS} ${SFILES}
        mkdep -a ${CFLAGS} ${CPPFLAGS} ${PARAM} ${MAC68K}/mac68k/genassym.c
 
index 13570e3..7f1c7c6 100644 (file)
@@ -1,4 +1,4 @@
-#      $Id: Makefile.mvme68k,v 1.4 1995/11/23 13:13:05 deraadt Exp $
+#      $Id: Makefile.mvme68k,v 1.5 1996/03/26 15:09:47 mickey Exp $
 
 # This makefile is constructed from a machine description:
 #      config machineid
@@ -87,7 +87,7 @@ LDX=-X
 .else
 LDX=-x
 .endif
-SYSTEM_OBJ=    locore.o vnode_if.o ${OBJS} param.o ioconf.o ${FPSP} \
+SYSTEM_OBJ=    locore.o ${OBJS} param.o ioconf.o ${FPSP} \
                ${LIBKERN} ${LIBCOMPAT}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
 SYSTEM_LD_HEAD=        @echo loading $@; rm -f $@
@@ -104,7 +104,7 @@ vers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
        ${CC} ${CFLAGS} -c vers.c
 
 clean::
-       rm -f eddep bsd bsd.gdb tags vnode_if.[ch] *.o locore.i \
+       rm -f eddep bsd bsd.gdb tags *.o locore.i \
            [a-z]*.s [Ee]rrs linterrs makelinks genassym
 
 lint: /tmp param.c
@@ -129,7 +129,7 @@ genassym: ${MVME68K}/mvme68k/genassym.c Makefile
        cc ${INCLUDES} ${IDENT} ${PARAM} -Dmc68020 -Dmvme68k -o genassym \
            ${MVME68K}/mvme68k/genassym.c
 
-depend: assym.s param.c vnode_if.h
+depend: assym.s param.c
        mkdep ${COPTS} ${CFILES} ioconf.c param.c
        mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${MVME68K}/mvme68k/genassym.c
 
@@ -154,7 +154,4 @@ param.c: $S/conf/param.c
 param.o: param.c Makefile
        ${CC} -c ${CFLAGS} ${PARAM} param.c
 
-vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-
 %RULES
index 2ac3e1d..f021b77 100644 (file)
@@ -1,5 +1,5 @@
 #      @(#)Makefile.hp300      7.10 (Berkeley) 6/27/91
-#      $Id: Makefile.m88k,v 1.1.1.1 1995/10/18 10:54:19 deraadt Exp $
+#      $Id: Makefile.m88k,v 1.2 1996/03/26 15:09:49 mickey Exp $
 #
 # Makefile for NetBSD
 #
@@ -85,7 +85,7 @@ NORMAL_S_C=   ${CPP} ${COPTS} ${PARAM} $< | ${TR} '\\' '\012' | ${AS} -o $@
 #      ${SYSTEM_LD_HEAD}
 #      ${SYSTEM_LD} swapxxx.o
 #      ${SYSTEM_LD_TAIL}
-SYSTEM_OBJ=    locore.o ${FPSP} vnode_if.o ${OBJS} param.o ioconf.o \
+SYSTEM_OBJ=    locore.o ${FPSP} ${OBJS} param.o ioconf.o \
                ${LIBKERN} ${LIBCOMPAT}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
 SYSTEM_LD_HEAD=        @echo loading $@;rm -f $@
@@ -109,7 +109,7 @@ newvers:
        ${CC} $(CFLAGS) -c vers.c
 
 clean::
-       rm -f eddep *netbsd netbsd.gdb tags vnode_if.[ch] *.o locore.i \
+       rm -f eddep *netbsd netbsd.gdb tags *.o locore.i \
                [a-z]*.s [Ee]rrs errs linterrs makelinks
 
 lint: /tmp param.c
@@ -145,7 +145,7 @@ genassym:
            -o genassym ${M88K}/m88k/genassym.c
        rm genassym.o
 
-depend: assym.s param.c vnode_if.h
+depend: assym.s param.c
        for f in ${CFILES} ioconf.c param.c ; \
        do \
                (mkdep -a ${COPTS} $${f}) \
@@ -172,7 +172,5 @@ param.c: $S/conf/param.c
 
 param.o: param.c Makefile
        ${CC} -c ${CFLAGS} ${PARAM} param.c
-vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
 
 %RULES
index 9964bb3..e3c11b1 100644 (file)
@@ -62,7 +62,7 @@ NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
 NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
 DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
 DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
-SYSTEM_OBJS=locore.o ${OBJS} param.o ioconf.o conf.o vnode_if.o ${LIBKERN} \
+SYSTEM_OBJS=locore.o ${OBJS} param.o ioconf.o conf.o ${LIBKERN} \
        ${LIBCOMPAT}
 SYSTEM_DEP=Makefile ${SYSTEM_OBJS}
 SYSTEM_LD_HEAD=        @echo loading $@; rm -f $@
@@ -77,7 +77,7 @@ SYSTEM_LD_TAIL= size $@ ; nm -n $@ > SYMMS ; chmod 755 $@
 
 clean::
        rm -f eddep *netbsd tags *.o locore.i [a-uw-z]*.s \
-               vnode_if.[ch] errs linterrs makelinks genassym
+               errs linterrs makelinks genassym
 
 #lint: /tmp param.c
 #      @lint -hbxn -I. -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \
@@ -111,7 +111,7 @@ genassym: ${PC532}/pc532/genassym.c
        ${CC} -static ${INCLUDES} -D_KERNEL ${IDENT} ${PARAM} \
                 ${PC532}/pc532/genassym.c -o genassym
 
-depend: assym.h param.c vnode_if.h
+depend: assym.h param.c
        sh /usr/bin/mkdep ${COPTS} ${CFILES} ioconf.c
        sh /usr/bin/mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${PC532}/pc532/genassym.c
 
@@ -150,10 +150,5 @@ newvers:
        sh $S/conf/newvers.sh
        ${CC} ${CFLAGS} -c vers.c
 
-# This allows you to specify which "awk" you will run, i.e.:
-#   make AWK=nawk ...
-vnode_if.c vnode_if.h : $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       AWK=${AWK} sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-
 %RULES
 
index e616d6b..1e7ab6d 100644 (file)
@@ -82,7 +82,7 @@ NORMAL_S_C=   ${AS}  ${COPTS} ${PARAM} $< -o $@
 #      ${SYSTEM_LD_HEAD}
 #      ${SYSTEM_LD} swapxxx.o
 #      ${SYSTEM_LD_TAIL}
-SYSTEM_OBJ=    locore.o fp.o vnode_if.o ${OBJS} param.o ioconf.o ${LIBKERN} \
+SYSTEM_OBJ=    locore.o fp.o ${OBJS} param.o ioconf.o ${LIBKERN} \
                ${LIBCOMPAT}
 #SYSTEM_DEP=   Makefile symbols.sort ${SYSTEM_OBJ} ${LIBKERN}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
@@ -114,7 +114,7 @@ newvers:
 
 clean::
        rm -f eddep bsd bsd.gdb tags *.o locore.i [a-z]*.s \
-           vnode_if.[ch] Errs errs linterrs makelinks genassym
+           Errs errs linterrs makelinks genassym
 
 lint: /tmp param.c
        @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} -UKGDB \
@@ -149,7 +149,7 @@ assym.h: genassym
 genassym: ${PICA}/pica/genassym.c
        ${CC} ${INCLUDES} ${IDENT} ${PARAM} -o genassym ${PICA}/pica/genassym.c
 
-depend: assym.h param.c vnode_if.h
+depend: assym.h param.c
        mkdep ${COPTS} ${CFILES} ioconf.c param.c
        mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${PICA}/pica/genassym.c
 
@@ -178,11 +178,6 @@ vers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
        sh $S/conf/newvers.sh
        ${CC} ${CFLAGS} -c vers.c
 
-vnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-
 %RULES
 
 
index 9e19330..c3b2e9b 100644 (file)
@@ -91,7 +91,7 @@ NORMAL_S_C=   ${AS}  ${COPTS} ${PARAM} $< -o $@
 #      ${SYSTEM_LD_HEAD}
 #      ${SYSTEM_LD} swapxxx.o
 #      ${SYSTEM_LD_TAIL}
-SYSTEM_OBJ=    locore.o fp.o vnode_if.o ${OBJS} param.o ioconf.o ${LIBKERN} \
+SYSTEM_OBJ=    locore.o fp.o ${OBJS} param.o ioconf.o ${LIBKERN} \
                ${LIBCOMPAT}
 #SYSTEM_DEP=   Makefile symbols.sort ${SYSTEM_OBJ} ${LIBKERN}
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
@@ -122,7 +122,7 @@ newvers:
 
 clean::
        rm -f eddep *vmunix vmunix.gdb tags *.o locore.i [a-z]*.s \
-               vnode_if.[ch] Errs errs linterrs makelinks genassym
+               Errs errs linterrs makelinks genassym
 
 lint: /tmp param.c
        @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} -UKGDB \
@@ -157,7 +157,7 @@ assym.h: genassym
 genassym: ${PMAX}/pmax/genassym.c
        cc ${INCLUDES} ${IDENT} ${PARAM} -o genassym ${PMAX}/pmax/genassym.c
 
-depend: assym.h param.c vnode_if.h
+depend: assym.h param.c
        mkdep ${COPTS} ${CFILES} ioconf.c param.c
        mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${PMAX}/pmax/genassym.c
 
@@ -186,11 +186,6 @@ vers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
        sh $S/conf/newvers.sh
        ${CC} ${CFLAGS} -c vers.c
 
-vnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
-       sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
-
 %RULES
 
 
index 105b745..2732125 100644 (file)
@@ -144,6 +144,7 @@ file kern/vfs_lookup.c
 file kern/vfs_subr.c
 file kern/vfs_syscalls.c
 file kern/vfs_vnops.c
+file kern/vnode_if.c
 file miscfs/deadfs/dead_vnops.c
 file miscfs/fdesc/fdesc_vfsops.c       fdesc
 file miscfs/fdesc/fdesc_vnops.c                fdesc
index 839338c..d9e62c3 100644 (file)
@@ -91,6 +91,7 @@ kern/vfs_lookup.c     standard
 kern/vfs_subr.c                standard
 kern/vfs_syscalls.c    standard
 kern/vfs_vnops.c       standard
+kern/vnode_if.c                standard
 miscfs/deadfs/dead_vnops.c     standard
 miscfs/fdesc/fdesc_vfsops.c    optional fdesc
 miscfs/fdesc/fdesc_vnops.c     optional fdesc
index 364e406..6778fab 100644 (file)
@@ -6,16 +6,23 @@ ARCH= alpha amiga atari hp300 i386 m68k mac68k mvme68k mvme88k pc532 \
        pica pmax sparc sun3 vax
 
 all:
-       @echo "make tags, make links or init_sysent.c only"
+       @echo "make tags, links, init_sysent.c, or vnode_if.c only"
+       @false
 
 SYSCALLSRC = makesyscalls.sh syscalls.conf syscalls.master
-init_sysent.c syscalls.c ../sys/syscall.h: ${SYSCALLSRC}
+init_sysent.c syscalls.c ../sys/syscall.h ../sys/syscallargs.h: ${SYSCALLSRC}
        -mv -f init_sysent.c init_sysent.c.bak
        -mv -f syscalls.c syscalls.c.bak
        -mv -f ../sys/syscall.h ../sys/syscall.h.bak
        -mv -f ../sys/syscallargs.h ../sys/syscallargs.h.bak
        sh makesyscalls.sh syscalls.conf syscalls.master
 
+VNODEIFSRC = vnode_if.sh vnode_if.src
+vnode_if.c ../sys/vnode_if.h: ${VNODEIFSRC}
+       -mv -f vnode_if.c vnode_if.c.bak
+       -mv -f ../sys/vnode_if.h ../sys/vnode_if.h.bak
+       sh vnode_if.sh vnode_if.src
+
 # Kernel tags:
 # Tags files are built in the top-level directory for each architecture,
 # with a makefile listing the architecture-dependent files, etc.  The list
index 8c94144..596c878 100644 (file)
@@ -1,5 +1,5 @@
 #! /bin/sh -
-#      $NetBSD: makesyscalls.sh,v 1.17 1995/10/07 06:28:31 mycroft Exp $
+#      $NetBSD: makesyscalls.sh,v 1.18 1996/03/15 01:25:12 cgd Exp $
 #
 # Copyright (c) 1994 Christopher G. Demetriou
 # All rights reserved.
@@ -108,6 +108,9 @@ s/\$//g
 ' < $2 | $awk "
 $toupper
 BEGIN {
+       # to allow nested #if/#else/#endif sets
+       savedepth = 0
+
        sysnames = \"$sysnames\"
        sysprotos = \"$sysprotos\"
        sysnumhdr = \"$sysnumhdr\"
@@ -177,17 +180,30 @@ $1 ~ /^#[         ]*if/ {
        print > sysent
        print > sysprotos
        print > sysnames
-       savesyscall = syscall
+       savesyscall[++savedepth] = syscall
        next
 }
 $1 ~ /^#[      ]*else/ {
        print > sysent
        print > sysprotos
        print > sysnames
-       syscall = savesyscall
+       if (savedepth <= 0) {
+               printf "%s: line %d: unbalenced #else\n", \
+                   infile, NR
+               exit 1
+       }
+       syscall = savesyscall[savedepth]
        next
 }
 $1 ~ /^#/ {
+       if ($1 ~ /^#[       ]*endif/) {
+               if (savedepth <= 0) {
+                       printf "%s: line %d: unbalenced #endif\n", \
+                           infile, NR
+                       exit 1
+               }
+               savedepth--;
+       }
        print > sysent
        print > sysprotos
        print > sysnames
diff --git a/sys/kern/vnode_if.c b/sys/kern/vnode_if.c
new file mode 100644 (file)
index 0000000..63c9662
--- /dev/null
@@ -0,0 +1,805 @@
+/*
+ * Warning: This file is generated automatically.
+ * (Modifications made here may easily be lost!)
+ *
+ * Created from the file:
+ *     NetBSD: vnode_if.src,v 1.9 1996/02/09 14:45:38 mycroft Exp 
+ * by the script:
+ *     NetBSD: vnode_if.sh,v 1.9 1996/02/29 20:58:22 cgd Exp 
+ */
+
+/*
+ * Copyright (c) 1992, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/param.h>
+#include <sys/mount.h>
+#include <sys/vnode.h>
+
+struct vnodeop_desc vop_default_desc = {
+       0,
+       "default",
+       0,
+       NULL,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+
+int vop_lookup_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_lookup_args,a_dvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_lookup_desc = {
+       0,
+       "vop_lookup",
+       0,
+       vop_lookup_vp_offsets,
+       VOPARG_OFFSETOF(struct vop_lookup_args, a_vpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_lookup_args, a_cnp),
+       NULL,
+};
+
+int vop_create_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_create_args,a_dvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_create_desc = {
+       0,
+       "vop_create",
+       0 | VDESC_VP0_WILLRELE,
+       vop_create_vp_offsets,
+       VOPARG_OFFSETOF(struct vop_create_args, a_vpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_create_args, a_cnp),
+       NULL,
+};
+
+int vop_mknod_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_mknod_args,a_dvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_mknod_desc = {
+       0,
+       "vop_mknod",
+       0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
+       vop_mknod_vp_offsets,
+       VOPARG_OFFSETOF(struct vop_mknod_args, a_vpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_mknod_args, a_cnp),
+       NULL,
+};
+
+int vop_open_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_open_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_open_desc = {
+       0,
+       "vop_open",
+       0,
+       vop_open_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_open_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_open_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_close_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_close_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_close_desc = {
+       0,
+       "vop_close",
+       0,
+       vop_close_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_close_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_close_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_access_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_access_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_access_desc = {
+       0,
+       "vop_access",
+       0,
+       vop_access_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_access_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_access_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_getattr_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_getattr_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_getattr_desc = {
+       0,
+       "vop_getattr",
+       0,
+       vop_getattr_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_getattr_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_getattr_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_setattr_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_setattr_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_setattr_desc = {
+       0,
+       "vop_setattr",
+       0,
+       vop_setattr_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_setattr_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_setattr_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_read_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_read_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_read_desc = {
+       0,
+       "vop_read",
+       0,
+       vop_read_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_read_args, a_cred),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_write_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_write_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_write_desc = {
+       0,
+       "vop_write",
+       0,
+       vop_write_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_write_args, a_cred),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_ioctl_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_ioctl_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_ioctl_desc = {
+       0,
+       "vop_ioctl",
+       0,
+       vop_ioctl_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_ioctl_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_ioctl_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_select_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_select_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_select_desc = {
+       0,
+       "vop_select",
+       0,
+       vop_select_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_select_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_select_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_mmap_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_mmap_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_mmap_desc = {
+       0,
+       "vop_mmap",
+       0,
+       vop_mmap_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_mmap_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_mmap_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_fsync_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_fsync_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_fsync_desc = {
+       0,
+       "vop_fsync",
+       0,
+       vop_fsync_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_fsync_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_fsync_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_seek_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_seek_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_seek_desc = {
+       0,
+       "vop_seek",
+       0,
+       vop_seek_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_seek_args, a_cred),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_remove_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_remove_args,a_dvp),
+       VOPARG_OFFSETOF(struct vop_remove_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_remove_desc = {
+       0,
+       "vop_remove",
+       0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
+       vop_remove_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_remove_args, a_cnp),
+       NULL,
+};
+
+int vop_link_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_link_args,a_dvp),
+       VOPARG_OFFSETOF(struct vop_link_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_link_desc = {
+       0,
+       "vop_link",
+       0 | VDESC_VP0_WILLRELE,
+       vop_link_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_link_args, a_cnp),
+       NULL,
+};
+
+int vop_rename_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_rename_args,a_fdvp),
+       VOPARG_OFFSETOF(struct vop_rename_args,a_fvp),
+       VOPARG_OFFSETOF(struct vop_rename_args,a_tdvp),
+       VOPARG_OFFSETOF(struct vop_rename_args,a_tvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_rename_desc = {
+       0,
+       "vop_rename",
+       0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE,
+       vop_rename_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_rename_args, a_fcnp),
+       NULL,
+};
+
+int vop_mkdir_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_mkdir_args,a_dvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_mkdir_desc = {
+       0,
+       "vop_mkdir",
+       0 | VDESC_VP0_WILLRELE,
+       vop_mkdir_vp_offsets,
+       VOPARG_OFFSETOF(struct vop_mkdir_args, a_vpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_mkdir_args, a_cnp),
+       NULL,
+};
+
+int vop_rmdir_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_rmdir_args,a_dvp),
+       VOPARG_OFFSETOF(struct vop_rmdir_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_rmdir_desc = {
+       0,
+       "vop_rmdir",
+       0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
+       vop_rmdir_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_rmdir_args, a_cnp),
+       NULL,
+};
+
+int vop_symlink_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_symlink_args,a_dvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_symlink_desc = {
+       0,
+       "vop_symlink",
+       0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
+       vop_symlink_vp_offsets,
+       VOPARG_OFFSETOF(struct vop_symlink_args, a_vpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_symlink_args, a_cnp),
+       NULL,
+};
+
+int vop_readdir_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_readdir_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_readdir_desc = {
+       0,
+       "vop_readdir",
+       0,
+       vop_readdir_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_readdir_args, a_cred),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_readlink_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_readlink_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_readlink_desc = {
+       0,
+       "vop_readlink",
+       0,
+       vop_readlink_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_readlink_args, a_cred),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_abortop_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_abortop_args,a_dvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_abortop_desc = {
+       0,
+       "vop_abortop",
+       0,
+       vop_abortop_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_abortop_args, a_cnp),
+       NULL,
+};
+
+int vop_inactive_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_inactive_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_inactive_desc = {
+       0,
+       "vop_inactive",
+       0,
+       vop_inactive_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_reclaim_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_reclaim_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_reclaim_desc = {
+       0,
+       "vop_reclaim",
+       0,
+       vop_reclaim_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_lock_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_lock_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_lock_desc = {
+       0,
+       "vop_lock",
+       0,
+       vop_lock_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_unlock_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_unlock_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_unlock_desc = {
+       0,
+       "vop_unlock",
+       0,
+       vop_unlock_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_bmap_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_bmap_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_bmap_desc = {
+       0,
+       "vop_bmap",
+       0,
+       vop_bmap_vp_offsets,
+       VOPARG_OFFSETOF(struct vop_bmap_args, a_vpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_print_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_print_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_print_desc = {
+       0,
+       "vop_print",
+       0,
+       vop_print_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_islocked_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_islocked_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_islocked_desc = {
+       0,
+       "vop_islocked",
+       0,
+       vop_islocked_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_pathconf_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_pathconf_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_pathconf_desc = {
+       0,
+       "vop_pathconf",
+       0,
+       vop_pathconf_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_advlock_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_advlock_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_advlock_desc = {
+       0,
+       "vop_advlock",
+       0,
+       vop_advlock_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_blkatoff_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_blkatoff_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_blkatoff_desc = {
+       0,
+       "vop_blkatoff",
+       0,
+       vop_blkatoff_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_valloc_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_valloc_args,a_pvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_valloc_desc = {
+       0,
+       "vop_valloc",
+       0,
+       vop_valloc_vp_offsets,
+       VOPARG_OFFSETOF(struct vop_valloc_args, a_vpp),
+       VOPARG_OFFSETOF(struct vop_valloc_args, a_cred),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_reallocblks_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_reallocblks_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_reallocblks_desc = {
+       0,
+       "vop_reallocblks",
+       0,
+       vop_reallocblks_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_vfree_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_vfree_args,a_pvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_vfree_desc = {
+       0,
+       "vop_vfree",
+       0,
+       vop_vfree_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_truncate_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_truncate_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_truncate_desc = {
+       0,
+       "vop_truncate",
+       0,
+       vop_truncate_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_truncate_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_truncate_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_update_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_update_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_update_desc = {
+       0,
+       "vop_update",
+       0,
+       vop_update_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_lease_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_lease_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_lease_desc = {
+       0,
+       "vop_lease",
+       0,
+       vop_lease_vp_offsets,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_lease_args, a_cred),
+       VOPARG_OFFSETOF(struct vop_lease_args, a_p),
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_whiteout_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vop_whiteout_args,a_dvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_whiteout_desc = {
+       0,
+       "vop_whiteout",
+       0,
+       vop_whiteout_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vop_whiteout_args, a_cnp),
+       NULL,
+};
+
+/* Special cases: */
+
+int vop_strategy_vp_offsets[] = {
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_strategy_desc = {
+       0,
+       "vop_strategy",
+       0,
+       vop_strategy_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+int vop_bwrite_vp_offsets[] = {
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vop_bwrite_desc = {
+       0,
+       "vop_bwrite",
+       0,
+       vop_bwrite_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       NULL,
+};
+
+/* End of special cases. */
+
+struct vnodeop_desc *vfs_op_descs[] = {
+       &vop_default_desc,      /* MUST BE FIRST */
+       &vop_strategy_desc,     /* XXX: SPECIAL CASE */
+       &vop_bwrite_desc,       /* XXX: SPECIAL CASE */
+
+       &vop_lookup_desc,
+       &vop_create_desc,
+       &vop_mknod_desc,
+       &vop_open_desc,
+       &vop_close_desc,
+       &vop_access_desc,
+       &vop_getattr_desc,
+       &vop_setattr_desc,
+       &vop_read_desc,
+       &vop_write_desc,
+       &vop_ioctl_desc,
+       &vop_select_desc,
+       &vop_mmap_desc,
+       &vop_fsync_desc,
+       &vop_seek_desc,
+       &vop_remove_desc,
+       &vop_link_desc,
+       &vop_rename_desc,
+       &vop_mkdir_desc,
+       &vop_rmdir_desc,
+       &vop_symlink_desc,
+       &vop_readdir_desc,
+       &vop_readlink_desc,
+       &vop_abortop_desc,
+       &vop_inactive_desc,
+       &vop_reclaim_desc,
+       &vop_lock_desc,
+       &vop_unlock_desc,
+       &vop_bmap_desc,
+       &vop_print_desc,
+       &vop_islocked_desc,
+       &vop_pathconf_desc,
+       &vop_advlock_desc,
+       &vop_blkatoff_desc,
+       &vop_valloc_desc,
+       &vop_reallocblks_desc,
+       &vop_vfree_desc,
+       &vop_truncate_desc,
+       &vop_update_desc,
+       &vop_lease_desc,
+       &vop_whiteout_desc,
+       NULL
+};
+
index ec57151..a49f63c 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/sh -
-copyright='
+copyright="\
 /*
  * Copyright (c) 1992, 1993
  *     The Regents of the University of California.  All rights reserved.
@@ -32,8 +32,8 @@ copyright='
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-'
-SCRIPT_ID='$NetBSD: vnode_if.sh,v 1.8 1995/03/10 04:13:52 chopps Exp $'
+"
+SCRIPT_ID='$NetBSD: vnode_if.sh,v 1.9 1996/02/29 20:58:22 cgd Exp $'
 
 # Script to produce VFS front-end sugar.
 #
@@ -46,12 +46,13 @@ if [ $# -ne 1 ] ; then
        exit 1
 fi
 
-# Name of the source file.
+# Name and revision of the source file.
 src=$1
+SRC_ID=`head -1 $src | sed -e 's/.*\$\(.*\)\$.*/\1/'`
 
 # Names of the created files.
 out_c=vnode_if.c
-out_h=vnode_if.h
+out_h=../sys/vnode_if.h
 
 # Awk program (must support nawk extensions)
 # Use "awk" at Berkeley, "nawk" or "gawk" elsewhere.
@@ -123,15 +124,17 @@ awk_parser='
 '
 
 # This is put after the copyright on each generated file.
-warning="
+warning="\
 /*
  * Warning: This file is generated automatically.
  * (Modifications made here may easily be lost!)
  *
- * Created by the script:
+ * Created from the file:
+ *     ${SRC_ID}
+ * by the script:
  *     ${SCRIPT_ID}
  */
-"
+" 
 
 # This is to satisfy McKusick (get rid of evil spaces 8^)
 anal_retentive='s:\([^/]\*\) :\1:g'
@@ -143,8 +146,9 @@ echo "$0: Creating $out_h" 1>&2
 exec > $out_h
 
 # Begin stuff
-echo "$copyright"
-echo "$warning"
+echo -n "$warning" | sed -e 's/\$//g'
+echo ""
+echo -n "$copyright"
 echo '
 extern struct vnodeop_desc vop_default_desc;
 '
@@ -224,8 +228,9 @@ echo "$0: Creating $out_c" 1>&2
 exec > $out_c
 
 # Begin stuff
-echo "$copyright"
-echo "$warning"
+echo -n "$warning" | sed -e 's/\$//g'
+echo ""
+echo -n "$copyright"
 echo '
 #include <sys/param.h>
 #include <sys/mount.h>
diff --git a/sys/sys/vnode_if.h b/sys/sys/vnode_if.h
new file mode 100644 (file)
index 0000000..24957b9
--- /dev/null
@@ -0,0 +1,1040 @@
+/*
+ * Warning: This file is generated automatically.
+ * (Modifications made here may easily be lost!)
+ *
+ * Created from the file:
+ *     NetBSD: vnode_if.src,v 1.9 1996/02/09 14:45:38 mycroft Exp 
+ * by the script:
+ *     NetBSD: vnode_if.sh,v 1.9 1996/02/29 20:58:22 cgd Exp 
+ */
+
+/*
+ * Copyright (c) 1992, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+extern struct vnodeop_desc vop_default_desc;
+
+
+struct vop_lookup_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_lookup_desc;
+static __inline int VOP_LOOKUP __P((struct vnode *, struct vnode **, 
+    struct componentname *));
+static __inline int VOP_LOOKUP(dvp, vpp, cnp)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+{
+       struct vop_lookup_args a;
+       a.a_desc = VDESC(vop_lookup);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       return (VCALL(dvp, VOFFSET(vop_lookup), &a));
+}
+
+struct vop_create_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+};
+extern struct vnodeop_desc vop_create_desc;
+static __inline int VOP_CREATE __P((struct vnode *, struct vnode **, 
+    struct componentname *, struct vattr *));
+static __inline int VOP_CREATE(dvp, vpp, cnp, vap)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+       struct vattr *vap;
+{
+       struct vop_create_args a;
+       a.a_desc = VDESC(vop_create);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       return (VCALL(dvp, VOFFSET(vop_create), &a));
+}
+
+struct vop_mknod_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+};
+extern struct vnodeop_desc vop_mknod_desc;
+static __inline int VOP_MKNOD __P((struct vnode *, struct vnode **, 
+    struct componentname *, struct vattr *));
+static __inline int VOP_MKNOD(dvp, vpp, cnp, vap)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+       struct vattr *vap;
+{
+       struct vop_mknod_args a;
+       a.a_desc = VDESC(vop_mknod);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       return (VCALL(dvp, VOFFSET(vop_mknod), &a));
+}
+
+struct vop_open_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_mode;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_open_desc;
+static __inline int VOP_OPEN __P((struct vnode *, int, struct ucred *, 
+    struct proc *));
+static __inline int VOP_OPEN(vp, mode, cred, p)
+       struct vnode *vp;
+       int mode;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_open_args a;
+       a.a_desc = VDESC(vop_open);
+       a.a_vp = vp;
+       a.a_mode = mode;
+       a.a_cred = cred;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_open), &a));
+}
+
+struct vop_close_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_fflag;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_close_desc;
+static __inline int VOP_CLOSE __P((struct vnode *, int, struct ucred *, 
+    struct proc *));
+static __inline int VOP_CLOSE(vp, fflag, cred, p)
+       struct vnode *vp;
+       int fflag;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_close_args a;
+       a.a_desc = VDESC(vop_close);
+       a.a_vp = vp;
+       a.a_fflag = fflag;
+       a.a_cred = cred;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_close), &a));
+}
+
+struct vop_access_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_mode;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_access_desc;
+static __inline int VOP_ACCESS __P((struct vnode *, int, struct ucred *, 
+    struct proc *));
+static __inline int VOP_ACCESS(vp, mode, cred, p)
+       struct vnode *vp;
+       int mode;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_access_args a;
+       a.a_desc = VDESC(vop_access);
+       a.a_vp = vp;
+       a.a_mode = mode;
+       a.a_cred = cred;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_access), &a));
+}
+
+struct vop_getattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct vattr *a_vap;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_getattr_desc;
+static __inline int VOP_GETATTR __P((struct vnode *, struct vattr *, 
+    struct ucred *, struct proc *));
+static __inline int VOP_GETATTR(vp, vap, cred, p)
+       struct vnode *vp;
+       struct vattr *vap;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_getattr_args a;
+       a.a_desc = VDESC(vop_getattr);
+       a.a_vp = vp;
+       a.a_vap = vap;
+       a.a_cred = cred;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_getattr), &a));
+}
+
+struct vop_setattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct vattr *a_vap;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_setattr_desc;
+static __inline int VOP_SETATTR __P((struct vnode *, struct vattr *, 
+    struct ucred *, struct proc *));
+static __inline int VOP_SETATTR(vp, vap, cred, p)
+       struct vnode *vp;
+       struct vattr *vap;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_setattr_args a;
+       a.a_desc = VDESC(vop_setattr);
+       a.a_vp = vp;
+       a.a_vap = vap;
+       a.a_cred = cred;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_setattr), &a));
+}
+
+struct vop_read_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       int a_ioflag;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_read_desc;
+static __inline int VOP_READ __P((struct vnode *, struct uio *, int, 
+    struct ucred *));
+static __inline int VOP_READ(vp, uio, ioflag, cred)
+       struct vnode *vp;
+       struct uio *uio;
+       int ioflag;
+       struct ucred *cred;
+{
+       struct vop_read_args a;
+       a.a_desc = VDESC(vop_read);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_ioflag = ioflag;
+       a.a_cred = cred;
+       return (VCALL(vp, VOFFSET(vop_read), &a));
+}
+
+struct vop_write_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       int a_ioflag;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_write_desc;
+static __inline int VOP_WRITE __P((struct vnode *, struct uio *, int, 
+    struct ucred *));
+static __inline int VOP_WRITE(vp, uio, ioflag, cred)
+       struct vnode *vp;
+       struct uio *uio;
+       int ioflag;
+       struct ucred *cred;
+{
+       struct vop_write_args a;
+       a.a_desc = VDESC(vop_write);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_ioflag = ioflag;
+       a.a_cred = cred;
+       return (VCALL(vp, VOFFSET(vop_write), &a));
+}
+
+struct vop_ioctl_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       u_long a_command;
+       caddr_t a_data;
+       int a_fflag;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_ioctl_desc;
+static __inline int VOP_IOCTL __P((struct vnode *, u_long, caddr_t, int, 
+    struct ucred *, struct proc *));
+static __inline int VOP_IOCTL(vp, command, data, fflag, cred, p)
+       struct vnode *vp;
+       u_long command;
+       caddr_t data;
+       int fflag;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_ioctl_args a;
+       a.a_desc = VDESC(vop_ioctl);
+       a.a_vp = vp;
+       a.a_command = command;
+       a.a_data = data;
+       a.a_fflag = fflag;
+       a.a_cred = cred;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_ioctl), &a));
+}
+
+struct vop_select_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_which;
+       int a_fflags;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_select_desc;
+static __inline int VOP_SELECT __P((struct vnode *, int, int, 
+    struct ucred *, struct proc *));
+static __inline int VOP_SELECT(vp, which, fflags, cred, p)
+       struct vnode *vp;
+       int which;
+       int fflags;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_select_args a;
+       a.a_desc = VDESC(vop_select);
+       a.a_vp = vp;
+       a.a_which = which;
+       a.a_fflags = fflags;
+       a.a_cred = cred;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_select), &a));
+}
+
+struct vop_mmap_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_fflags;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_mmap_desc;
+static __inline int VOP_MMAP __P((struct vnode *, int, struct ucred *, 
+    struct proc *));
+static __inline int VOP_MMAP(vp, fflags, cred, p)
+       struct vnode *vp;
+       int fflags;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_mmap_args a;
+       a.a_desc = VDESC(vop_mmap);
+       a.a_vp = vp;
+       a.a_fflags = fflags;
+       a.a_cred = cred;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_mmap), &a));
+}
+
+struct vop_fsync_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct ucred *a_cred;
+       int a_waitfor;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_fsync_desc;
+static __inline int VOP_FSYNC __P((struct vnode *, struct ucred *, int, 
+    struct proc *));
+static __inline int VOP_FSYNC(vp, cred, waitfor, p)
+       struct vnode *vp;
+       struct ucred *cred;
+       int waitfor;
+       struct proc *p;
+{
+       struct vop_fsync_args a;
+       a.a_desc = VDESC(vop_fsync);
+       a.a_vp = vp;
+       a.a_cred = cred;
+       a.a_waitfor = waitfor;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_fsync), &a));
+}
+
+struct vop_seek_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       off_t a_oldoff;
+       off_t a_newoff;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_seek_desc;
+static __inline int VOP_SEEK __P((struct vnode *, off_t, off_t, 
+    struct ucred *));
+static __inline int VOP_SEEK(vp, oldoff, newoff, cred)
+       struct vnode *vp;
+       off_t oldoff;
+       off_t newoff;
+       struct ucred *cred;
+{
+       struct vop_seek_args a;
+       a.a_desc = VDESC(vop_seek);
+       a.a_vp = vp;
+       a.a_oldoff = oldoff;
+       a.a_newoff = newoff;
+       a.a_cred = cred;
+       return (VCALL(vp, VOFFSET(vop_seek), &a));
+}
+
+struct vop_remove_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode *a_vp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_remove_desc;
+static __inline int VOP_REMOVE __P((struct vnode *, struct vnode *, 
+    struct componentname *));
+static __inline int VOP_REMOVE(dvp, vp, cnp)
+       struct vnode *dvp;
+       struct vnode *vp;
+       struct componentname *cnp;
+{
+       struct vop_remove_args a;
+       a.a_desc = VDESC(vop_remove);
+       a.a_dvp = dvp;
+       a.a_vp = vp;
+       a.a_cnp = cnp;
+       return (VCALL(dvp, VOFFSET(vop_remove), &a));
+}
+
+struct vop_link_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode *a_vp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_link_desc;
+static __inline int VOP_LINK __P((struct vnode *, struct vnode *, 
+    struct componentname *));
+static __inline int VOP_LINK(dvp, vp, cnp)
+       struct vnode *dvp;
+       struct vnode *vp;
+       struct componentname *cnp;
+{
+       struct vop_link_args a;
+       a.a_desc = VDESC(vop_link);
+       a.a_dvp = dvp;
+       a.a_vp = vp;
+       a.a_cnp = cnp;
+       return (VCALL(dvp, VOFFSET(vop_link), &a));
+}
+
+struct vop_rename_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_fdvp;
+       struct vnode *a_fvp;
+       struct componentname *a_fcnp;
+       struct vnode *a_tdvp;
+       struct vnode *a_tvp;
+       struct componentname *a_tcnp;
+};
+extern struct vnodeop_desc vop_rename_desc;
+static __inline int VOP_RENAME __P((struct vnode *, struct vnode *, 
+    struct componentname *, struct vnode *, struct vnode *, 
+    struct componentname *));
+static __inline int VOP_RENAME(fdvp, fvp, fcnp, tdvp, tvp, tcnp)
+       struct vnode *fdvp;
+       struct vnode *fvp;
+       struct componentname *fcnp;
+       struct vnode *tdvp;
+       struct vnode *tvp;
+       struct componentname *tcnp;
+{
+       struct vop_rename_args a;
+       a.a_desc = VDESC(vop_rename);
+       a.a_fdvp = fdvp;
+       a.a_fvp = fvp;
+       a.a_fcnp = fcnp;
+       a.a_tdvp = tdvp;
+       a.a_tvp = tvp;
+       a.a_tcnp = tcnp;
+       return (VCALL(fdvp, VOFFSET(vop_rename), &a));
+}
+
+struct vop_mkdir_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+};
+extern struct vnodeop_desc vop_mkdir_desc;
+static __inline int VOP_MKDIR __P((struct vnode *, struct vnode **, 
+    struct componentname *, struct vattr *));
+static __inline int VOP_MKDIR(dvp, vpp, cnp, vap)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+       struct vattr *vap;
+{
+       struct vop_mkdir_args a;
+       a.a_desc = VDESC(vop_mkdir);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       return (VCALL(dvp, VOFFSET(vop_mkdir), &a));
+}
+
+struct vop_rmdir_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode *a_vp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_rmdir_desc;
+static __inline int VOP_RMDIR __P((struct vnode *, struct vnode *, 
+    struct componentname *));
+static __inline int VOP_RMDIR(dvp, vp, cnp)
+       struct vnode *dvp;
+       struct vnode *vp;
+       struct componentname *cnp;
+{
+       struct vop_rmdir_args a;
+       a.a_desc = VDESC(vop_rmdir);
+       a.a_dvp = dvp;
+       a.a_vp = vp;
+       a.a_cnp = cnp;
+       return (VCALL(dvp, VOFFSET(vop_rmdir), &a));
+}
+
+struct vop_symlink_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+       char *a_target;
+};
+extern struct vnodeop_desc vop_symlink_desc;
+static __inline int VOP_SYMLINK __P((struct vnode *, struct vnode **, 
+    struct componentname *, struct vattr *, char *));
+static __inline int VOP_SYMLINK(dvp, vpp, cnp, vap, target)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+       struct vattr *vap;
+       char *target;
+{
+       struct vop_symlink_args a;
+       a.a_desc = VDESC(vop_symlink);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       a.a_target = target;
+       return (VCALL(dvp, VOFFSET(vop_symlink), &a));
+}
+
+struct vop_readdir_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       struct ucred *a_cred;
+       int *a_eofflag;
+       u_long *a_cookies;
+       int a_ncookies;
+};
+extern struct vnodeop_desc vop_readdir_desc;
+static __inline int VOP_READDIR __P((struct vnode *, struct uio *, 
+    struct ucred *, int *, u_long *, int));
+static __inline int VOP_READDIR(vp, uio, cred, eofflag, cookies, ncookies)
+       struct vnode *vp;
+       struct uio *uio;
+       struct ucred *cred;
+       int *eofflag;
+       u_long *cookies;
+       int ncookies;
+{
+       struct vop_readdir_args a;
+       a.a_desc = VDESC(vop_readdir);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_cred = cred;
+       a.a_eofflag = eofflag;
+       a.a_cookies = cookies;
+       a.a_ncookies = ncookies;
+       return (VCALL(vp, VOFFSET(vop_readdir), &a));
+}
+
+struct vop_readlink_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_readlink_desc;
+static __inline int VOP_READLINK __P((struct vnode *, struct uio *, 
+    struct ucred *));
+static __inline int VOP_READLINK(vp, uio, cred)
+       struct vnode *vp;
+       struct uio *uio;
+       struct ucred *cred;
+{
+       struct vop_readlink_args a;
+       a.a_desc = VDESC(vop_readlink);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_cred = cred;
+       return (VCALL(vp, VOFFSET(vop_readlink), &a));
+}
+
+struct vop_abortop_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_abortop_desc;
+static __inline int VOP_ABORTOP __P((struct vnode *, struct componentname *));
+static __inline int VOP_ABORTOP(dvp, cnp)
+       struct vnode *dvp;
+       struct componentname *cnp;
+{
+       struct vop_abortop_args a;
+       a.a_desc = VDESC(vop_abortop);
+       a.a_dvp = dvp;
+       a.a_cnp = cnp;
+       return (VCALL(dvp, VOFFSET(vop_abortop), &a));
+}
+
+struct vop_inactive_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_inactive_desc;
+static __inline int VOP_INACTIVE __P((struct vnode *));
+static __inline int VOP_INACTIVE(vp)
+       struct vnode *vp;
+{
+       struct vop_inactive_args a;
+       a.a_desc = VDESC(vop_inactive);
+       a.a_vp = vp;
+       return (VCALL(vp, VOFFSET(vop_inactive), &a));
+}
+
+struct vop_reclaim_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_reclaim_desc;
+static __inline int VOP_RECLAIM __P((struct vnode *));
+static __inline int VOP_RECLAIM(vp)
+       struct vnode *vp;
+{
+       struct vop_reclaim_args a;
+       a.a_desc = VDESC(vop_reclaim);
+       a.a_vp = vp;
+       return (VCALL(vp, VOFFSET(vop_reclaim), &a));
+}
+
+struct vop_lock_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_lock_desc;
+static __inline int VOP_LOCK __P((struct vnode *));
+static __inline int VOP_LOCK(vp)
+       struct vnode *vp;
+{
+       struct vop_lock_args a;
+       a.a_desc = VDESC(vop_lock);
+       a.a_vp = vp;
+       return (VCALL(vp, VOFFSET(vop_lock), &a));
+}
+
+struct vop_unlock_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_unlock_desc;
+static __inline int VOP_UNLOCK __P((struct vnode *));
+static __inline int VOP_UNLOCK(vp)
+       struct vnode *vp;
+{
+       struct vop_unlock_args a;
+       a.a_desc = VDESC(vop_unlock);
+       a.a_vp = vp;
+       return (VCALL(vp, VOFFSET(vop_unlock), &a));
+}
+
+struct vop_bmap_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       daddr_t a_bn;
+       struct vnode **a_vpp;
+       daddr_t *a_bnp;
+       int *a_runp;
+};
+extern struct vnodeop_desc vop_bmap_desc;
+static __inline int VOP_BMAP __P((struct vnode *, daddr_t, struct vnode **, 
+    daddr_t *, int *));
+static __inline int VOP_BMAP(vp, bn, vpp, bnp, runp)
+       struct vnode *vp;
+       daddr_t bn;
+       struct vnode **vpp;
+       daddr_t *bnp;
+       int *runp;
+{
+       struct vop_bmap_args a;
+       a.a_desc = VDESC(vop_bmap);
+       a.a_vp = vp;
+       a.a_bn = bn;
+       a.a_vpp = vpp;
+       a.a_bnp = bnp;
+       a.a_runp = runp;
+       return (VCALL(vp, VOFFSET(vop_bmap), &a));
+}
+
+struct vop_print_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_print_desc;
+static __inline int VOP_PRINT __P((struct vnode *));
+static __inline int VOP_PRINT(vp)
+       struct vnode *vp;
+{
+       struct vop_print_args a;
+       a.a_desc = VDESC(vop_print);
+       a.a_vp = vp;
+       return (VCALL(vp, VOFFSET(vop_print), &a));
+}
+
+struct vop_islocked_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_islocked_desc;
+static __inline int VOP_ISLOCKED __P((struct vnode *));
+static __inline int VOP_ISLOCKED(vp)
+       struct vnode *vp;
+{
+       struct vop_islocked_args a;
+       a.a_desc = VDESC(vop_islocked);
+       a.a_vp = vp;
+       return (VCALL(vp, VOFFSET(vop_islocked), &a));
+}
+
+struct vop_pathconf_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_name;
+       register_t *a_retval;
+};
+extern struct vnodeop_desc vop_pathconf_desc;
+static __inline int VOP_PATHCONF __P((struct vnode *, int, register_t *));
+static __inline int VOP_PATHCONF(vp, name, retval)
+       struct vnode *vp;
+       int name;
+       register_t *retval;
+{
+       struct vop_pathconf_args a;
+       a.a_desc = VDESC(vop_pathconf);
+       a.a_vp = vp;
+       a.a_name = name;
+       a.a_retval = retval;
+       return (VCALL(vp, VOFFSET(vop_pathconf), &a));
+}
+
+struct vop_advlock_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       caddr_t a_id;
+       int a_op;
+       struct flock *a_fl;
+       int a_flags;
+};
+extern struct vnodeop_desc vop_advlock_desc;
+static __inline int VOP_ADVLOCK __P((struct vnode *, caddr_t, int, 
+    struct flock *, int));
+static __inline int VOP_ADVLOCK(vp, id, op, fl, flags)
+       struct vnode *vp;
+       caddr_t id;
+       int op;
+       struct flock *fl;
+       int flags;
+{
+       struct vop_advlock_args a;
+       a.a_desc = VDESC(vop_advlock);
+       a.a_vp = vp;
+       a.a_id = id;
+       a.a_op = op;
+       a.a_fl = fl;
+       a.a_flags = flags;
+       return (VCALL(vp, VOFFSET(vop_advlock), &a));
+}
+
+struct vop_blkatoff_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       off_t a_offset;
+       char **a_res;
+       struct buf **a_bpp;
+};
+extern struct vnodeop_desc vop_blkatoff_desc;
+static __inline int VOP_BLKATOFF __P((struct vnode *, off_t, char **, 
+    struct buf **));
+static __inline int VOP_BLKATOFF(vp, offset, res, bpp)
+       struct vnode *vp;
+       off_t offset;
+       char **res;
+       struct buf **bpp;
+{
+       struct vop_blkatoff_args a;
+       a.a_desc = VDESC(vop_blkatoff);
+       a.a_vp = vp;
+       a.a_offset = offset;
+       a.a_res = res;
+       a.a_bpp = bpp;
+       return (VCALL(vp, VOFFSET(vop_blkatoff), &a));
+}
+
+struct vop_valloc_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_pvp;
+       int a_mode;
+       struct ucred *a_cred;
+       struct vnode **a_vpp;
+};
+extern struct vnodeop_desc vop_valloc_desc;
+static __inline int VOP_VALLOC __P((struct vnode *, int, struct ucred *, 
+    struct vnode **));
+static __inline int VOP_VALLOC(pvp, mode, cred, vpp)
+       struct vnode *pvp;
+       int mode;
+       struct ucred *cred;
+       struct vnode **vpp;
+{
+       struct vop_valloc_args a;
+       a.a_desc = VDESC(vop_valloc);
+       a.a_pvp = pvp;
+       a.a_mode = mode;
+       a.a_cred = cred;
+       a.a_vpp = vpp;
+       return (VCALL(pvp, VOFFSET(vop_valloc), &a));
+}
+
+struct vop_reallocblks_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct cluster_save *a_buflist;
+};
+extern struct vnodeop_desc vop_reallocblks_desc;
+static __inline int VOP_REALLOCBLKS __P((struct vnode *, 
+    struct cluster_save *));
+static __inline int VOP_REALLOCBLKS(vp, buflist)
+       struct vnode *vp;
+       struct cluster_save *buflist;
+{
+       struct vop_reallocblks_args a;
+       a.a_desc = VDESC(vop_reallocblks);
+       a.a_vp = vp;
+       a.a_buflist = buflist;
+       return (VCALL(vp, VOFFSET(vop_reallocblks), &a));
+}
+
+struct vop_vfree_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_pvp;
+       ino_t a_ino;
+       int a_mode;
+};
+extern struct vnodeop_desc vop_vfree_desc;
+static __inline int VOP_VFREE __P((struct vnode *, ino_t, int));
+static __inline int VOP_VFREE(pvp, ino, mode)
+       struct vnode *pvp;
+       ino_t ino;
+       int mode;
+{
+       struct vop_vfree_args a;
+       a.a_desc = VDESC(vop_vfree);
+       a.a_pvp = pvp;
+       a.a_ino = ino;
+       a.a_mode = mode;
+       return (VCALL(pvp, VOFFSET(vop_vfree), &a));
+}
+
+struct vop_truncate_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       off_t a_length;
+       int a_flags;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_truncate_desc;
+static __inline int VOP_TRUNCATE __P((struct vnode *, off_t, int, 
+    struct ucred *, struct proc *));
+static __inline int VOP_TRUNCATE(vp, length, flags, cred, p)
+       struct vnode *vp;
+       off_t length;
+       int flags;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_truncate_args a;
+       a.a_desc = VDESC(vop_truncate);
+       a.a_vp = vp;
+       a.a_length = length;
+       a.a_flags = flags;
+       a.a_cred = cred;
+       a.a_p = p;
+       return (VCALL(vp, VOFFSET(vop_truncate), &a));
+}
+
+struct vop_update_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct timeval *a_access;
+       struct timeval *a_modify;
+       int a_waitfor;
+};
+extern struct vnodeop_desc vop_update_desc;
+static __inline int VOP_UPDATE __P((struct vnode *, struct timeval *, 
+    struct timeval *, int));
+static __inline int VOP_UPDATE(vp, access, modify, waitfor)
+       struct vnode *vp;
+       struct timeval *access;
+       struct timeval *modify;
+       int waitfor;
+{
+       struct vop_update_args a;
+       a.a_desc = VDESC(vop_update);
+       a.a_vp = vp;
+       a.a_access = access;
+       a.a_modify = modify;
+       a.a_waitfor = waitfor;
+       return (VCALL(vp, VOFFSET(vop_update), &a));
+}
+
+struct vop_lease_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct proc *a_p;
+       struct ucred *a_cred;
+       int a_flag;
+};
+extern struct vnodeop_desc vop_lease_desc;
+static __inline int VOP_LEASE __P((struct vnode *, struct proc *, 
+    struct ucred *, int));
+static __inline int VOP_LEASE(vp, p, cred, flag)
+       struct vnode *vp;
+       struct proc *p;
+       struct ucred *cred;
+       int flag;
+{
+       struct vop_lease_args a;
+       a.a_desc = VDESC(vop_lease);
+       a.a_vp = vp;
+       a.a_p = p;
+       a.a_cred = cred;
+       a.a_flag = flag;
+       return (VCALL(vp, VOFFSET(vop_lease), &a));
+}
+
+struct vop_whiteout_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct componentname *a_cnp;
+       int a_flags;
+};
+extern struct vnodeop_desc vop_whiteout_desc;
+static __inline int VOP_WHITEOUT __P((struct vnode *, 
+    struct componentname *, int));
+static __inline int VOP_WHITEOUT(dvp, cnp, flags)
+       struct vnode *dvp;
+       struct componentname *cnp;
+       int flags;
+{
+       struct vop_whiteout_args a;
+       a.a_desc = VDESC(vop_whiteout);
+       a.a_dvp = dvp;
+       a.a_cnp = cnp;
+       a.a_flags = flags;
+       return (VCALL(dvp, VOFFSET(vop_whiteout), &a));
+}
+
+/* Special cases: */
+#include <sys/buf.h>
+
+struct vop_strategy_args {
+       struct vnodeop_desc *a_desc;
+       struct buf *a_bp;
+};
+extern struct vnodeop_desc vop_strategy_desc;
+static __inline int VOP_STRATEGY __P((struct buf *));
+static __inline int VOP_STRATEGY(bp)
+       struct buf *bp;
+{
+       struct vop_strategy_args a;
+       a.a_desc = VDESC(vop_strategy);
+       a.a_bp = bp;
+       return (VCALL(bp->b_vp, VOFFSET(vop_strategy), &a));
+}
+
+struct vop_bwrite_args {
+       struct vnodeop_desc *a_desc;
+       struct buf *a_bp;
+};
+extern struct vnodeop_desc vop_bwrite_desc;
+static __inline int VOP_BWRITE __P((struct buf *));
+static __inline int VOP_BWRITE(bp)
+       struct buf *bp;
+{
+       struct vop_bwrite_args a;
+       a.a_desc = VDESC(vop_bwrite);
+       a.a_bp = bp;
+       return (VCALL(bp->b_vp, VOFFSET(vop_bwrite), &a));
+}
+
+/* End of special cases. */