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 ;)
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 $@
${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
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}
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
# ${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; \
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 .
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:
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
# ${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 $@
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 \
${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
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
# ${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 $@
${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
${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
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
# ${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; \
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 .
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:
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
# ${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; \
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 .
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:
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
-# $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
.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 $@
${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
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
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
# @(#)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
#
# ${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 $@
${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
-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}) \
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
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 $@
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} \
${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
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
# ${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}
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 \
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
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
# ${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}
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 \
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
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
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
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
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
#! /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.
' < $2 | $awk "
$toupper
BEGIN {
+ # to allow nested #if/#else/#endif sets
+ savedepth = 0
+
sysnames = \"$sysnames\"
sysprotos = \"$sysprotos\"
sysnumhdr = \"$sysnumhdr\"
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
--- /dev/null
+/*
+ * 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
+};
+
#!/bin/sh -
-copyright='
+copyright="\
/*
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
* 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.
#
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.
'
# 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'
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;
'
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>
--- /dev/null
+/*
+ * 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. */