summaryrefslogtreecommitdiff
path: root/sys/kern/vnode_if.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/vnode_if.sh')
-rw-r--r--sys/kern/vnode_if.sh40
1 files changed, 38 insertions, 2 deletions
diff --git a/sys/kern/vnode_if.sh b/sys/kern/vnode_if.sh
index 8193edb0c53c7..d289c35da7686 100644
--- a/sys/kern/vnode_if.sh
+++ b/sys/kern/vnode_if.sh
@@ -32,7 +32,7 @@
# SUCH DAMAGE.
#
# @(#)vnode_if.sh 8.1 (Berkeley) 6/10/93
-# $Id: vnode_if.sh,v 1.15 1998/07/04 20:45:32 julian Exp $
+# $Id: vnode_if.sh,v 1.14 1997/12/19 23:25:16 bde Exp $
#
# Script to produce VFS front-end sugar.
@@ -188,7 +188,7 @@ cat << END_OF_LEADING_COMMENT > $CFILE
#include <sys/vnode.h>
struct vnodeop_desc vop_default_desc = {
- 1, /* special case, vop_default => 1 */
+ 0,
"default",
0,
NULL,
@@ -400,3 +400,39 @@ struct vnodeop_desc vop_bwrite_desc = {
NULL,
};
END_OF_SPECIAL_CASES
+
+# Add the vfs_op_descs array to the C file.
+$AWK '
+ BEGIN {
+ printf("\nstruct vnodeop_desc *vfs_op_descs[] = {\n");
+ printf("\t&vop_default_desc, /* MUST BE FIRST */\n");
+ printf("\t&vop_strategy_desc, /* XXX: SPECIAL CASE */\n");
+ printf("\t&vop_bwrite_desc, /* XXX: SPECIAL CASE */\n");
+ }
+ END {
+ printf("\tNULL\n};\n");
+ }
+ NF == 0 || $0 ~ "^#" {
+ next;
+ }
+ {
+ # Get the function name.
+ printf("\t&%s_desc,\n", $1);
+
+ # Skip the function arguments.
+ for (;;) {
+ if (getline <= 0)
+ exit
+ if ($0 ~ "^};")
+ break;
+ }
+ }' < $SRC >> $CFILE
+
+cat << END_OF_NUMOPS_CODE >> $CFILE
+
+/*
+ * the -1 is to account for the NULL
+ * XXX is the NULL still necessary? I don't think so...
+ */
+int vfs_opv_numops = (sizeof(vfs_op_descs)/sizeof(struct vnodeop_desc *)) - 1;
+END_OF_NUMOPS_CODE