From 3e791e7011e4b568e01637d7022a47a9ce62e211 Mon Sep 17 00:00:00 2001 From: mickey Date: Tue, 26 Mar 1996 15:09:28 +0000 Subject: [PATCH] From NetBSD: vnode_if.[ch] made machine independent. very usefull (for 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 ;) --- sys/arch/alpha/conf/Makefile.alpha | 9 +- sys/arch/amiga/conf/Makefile.amiga | 13 +- sys/arch/atari/conf/Makefile.atari | 8 +- sys/arch/hp300/conf/Makefile.hp300 | 9 +- sys/arch/i386/conf/Makefile.i386 | 13 +- sys/arch/mac68k/conf/Makefile.mac68k | 13 +- sys/arch/mvme68k/conf/Makefile.mvme68k | 11 +- sys/arch/mvme88k/conf/Makefile.m88k | 10 +- sys/arch/pc532/conf/Makefile.pc532 | 11 +- sys/arch/pica/conf/Makefile.pica | 11 +- sys/arch/pmax/conf/Makefile.pmax | 11 +- sys/conf/files | 1 + sys/conf/files.oldconf | 1 + sys/kern/Makefile | 11 +- sys/kern/makesyscalls.sh | 22 +- sys/kern/vnode_if.c | 805 ++++++++++++++++++ sys/kern/vnode_if.sh | 29 +- sys/sys/vnode_if.h | 1040 ++++++++++++++++++++++++ 18 files changed, 1933 insertions(+), 95 deletions(-) create mode 100644 sys/kern/vnode_if.c create mode 100644 sys/sys/vnode_if.h diff --git a/sys/arch/alpha/conf/Makefile.alpha b/sys/arch/alpha/conf/Makefile.alpha index e6dd45bd03e..b09846200a3 100644 --- a/sys/arch/alpha/conf/Makefile.alpha +++ b/sys/arch/alpha/conf/Makefile.alpha @@ -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 diff --git a/sys/arch/amiga/conf/Makefile.amiga b/sys/arch/amiga/conf/Makefile.amiga index 5c55011a79b..9e28c722432 100644 --- a/sys/arch/amiga/conf/Makefile.amiga +++ b/sys/arch/amiga/conf/Makefile.amiga @@ -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 diff --git a/sys/arch/atari/conf/Makefile.atari b/sys/arch/atari/conf/Makefile.atari index d83a9cc2478..a2259c29650 100644 --- a/sys/arch/atari/conf/Makefile.atari +++ b/sys/arch/atari/conf/Makefile.atari @@ -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 diff --git a/sys/arch/hp300/conf/Makefile.hp300 b/sys/arch/hp300/conf/Makefile.hp300 index d95395b8a5f..807bd59bf5b 100644 --- a/sys/arch/hp300/conf/Makefile.hp300 +++ b/sys/arch/hp300/conf/Makefile.hp300 @@ -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 diff --git a/sys/arch/i386/conf/Makefile.i386 b/sys/arch/i386/conf/Makefile.i386 index 364cf3c16e8..28565c703cb 100644 --- a/sys/arch/i386/conf/Makefile.i386 +++ b/sys/arch/i386/conf/Makefile.i386 @@ -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 diff --git a/sys/arch/mac68k/conf/Makefile.mac68k b/sys/arch/mac68k/conf/Makefile.mac68k index 16e28f4fd7d..cfedb745dd6 100644 --- a/sys/arch/mac68k/conf/Makefile.mac68k +++ b/sys/arch/mac68k/conf/Makefile.mac68k @@ -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 diff --git a/sys/arch/mvme68k/conf/Makefile.mvme68k b/sys/arch/mvme68k/conf/Makefile.mvme68k index 13570e3d4b5..7f1c7c6c8a3 100644 --- a/sys/arch/mvme68k/conf/Makefile.mvme68k +++ b/sys/arch/mvme68k/conf/Makefile.mvme68k @@ -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 diff --git a/sys/arch/mvme88k/conf/Makefile.m88k b/sys/arch/mvme88k/conf/Makefile.m88k index 2ac3e1df446..f021b77b408 100644 --- a/sys/arch/mvme88k/conf/Makefile.m88k +++ b/sys/arch/mvme88k/conf/Makefile.m88k @@ -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 diff --git a/sys/arch/pc532/conf/Makefile.pc532 b/sys/arch/pc532/conf/Makefile.pc532 index 9964bb3739f..e3c11b1a696 100644 --- a/sys/arch/pc532/conf/Makefile.pc532 +++ b/sys/arch/pc532/conf/Makefile.pc532 @@ -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 diff --git a/sys/arch/pica/conf/Makefile.pica b/sys/arch/pica/conf/Makefile.pica index e616d6bc4b7..1e7ab6d1f18 100644 --- a/sys/arch/pica/conf/Makefile.pica +++ b/sys/arch/pica/conf/Makefile.pica @@ -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 diff --git a/sys/arch/pmax/conf/Makefile.pmax b/sys/arch/pmax/conf/Makefile.pmax index 9e19330aedc..c3b2e9b0715 100644 --- a/sys/arch/pmax/conf/Makefile.pmax +++ b/sys/arch/pmax/conf/Makefile.pmax @@ -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 diff --git a/sys/conf/files b/sys/conf/files index 105b7455622..273212533a4 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -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 diff --git a/sys/conf/files.oldconf b/sys/conf/files.oldconf index 839338c8f20..d9e62c33e26 100644 --- a/sys/conf/files.oldconf +++ b/sys/conf/files.oldconf @@ -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 diff --git a/sys/kern/Makefile b/sys/kern/Makefile index 364e4061a11..6778fab0154 100644 --- a/sys/kern/Makefile +++ b/sys/kern/Makefile @@ -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 diff --git a/sys/kern/makesyscalls.sh b/sys/kern/makesyscalls.sh index 8c94144ee2e..596c878abba 100644 --- a/sys/kern/makesyscalls.sh +++ b/sys/kern/makesyscalls.sh @@ -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 index 00000000000..63c96621b08 --- /dev/null +++ b/sys/kern/vnode_if.c @@ -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 +#include +#include + +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 +}; + diff --git a/sys/kern/vnode_if.sh b/sys/kern/vnode_if.sh index ec57151726b..a49f63c7450 100644 --- a/sys/kern/vnode_if.sh +++ b/sys/kern/vnode_if.sh @@ -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 #include diff --git a/sys/sys/vnode_if.h b/sys/sys/vnode_if.h new file mode 100644 index 00000000000..24957b9984b --- /dev/null +++ b/sys/sys/vnode_if.h @@ -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 + +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. */ -- 2.20.1