From 4d9781b3dbece651d7be988939f2c166bc7e8562 Mon Sep 17 00:00:00 2001 From: phk Date: Thu, 13 Jan 2005 07:53:01 +0000 Subject: Change the generated VOP_ macro implementations to improve type checking and KASSERT coverage. After this check there is only one "nasty" cast in this code but there is a KASSERT to protect against the wrong argument structure behind that cast. Un-inlining the meat of VOP_FOO() saves 35kB of text segment on a typical kernel with no change in performance. We also now run the checking and tracing on VOP's which have been layered by nullfs, umapfs, deadfs or unionfs. Add new (non-inline) VOP_FOO_AP() functions which take a "struct foo_args" argument and does everything the VOP_FOO() macros used to do with checks and debugging code. Add KASSERT to VOP_FOO_AP() check for argument type being correct. Slim down VOP_FOO() inline functions to just stuff arguments into the struct foo_args and call VOP_FOO_AP(). Put function pointer to VOP_FOO_AP() into vop_foo_desc structure and make VCALL() use it instead of the current offsetoff() hack. Retire vcall() which implemented the offsetoff() Make deadfs and unionfs use VOP_FOO_AP() calls instead of VCALL(), we know which specific call we want already. Remove unneeded arguments to VCALL() in nullfs and umapfs bypass functions. Remove unused vdesc_offset and VOFFSET(). Generally improve style/readability of the generated code. --- sys/fs/deadfs/dead_vnops.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sys/fs/deadfs') diff --git a/sys/fs/deadfs/dead_vnops.c b/sys/fs/deadfs/dead_vnops.c index 787e510..00f4015 100644 --- a/sys/fs/deadfs/dead_vnops.c +++ b/sys/fs/deadfs/dead_vnops.c @@ -176,7 +176,7 @@ dead_ioctl(ap) if (!chkvnlock(ap->a_vp)) return (ENOTTY); /* XXX: Doesn't this just recurse back here ? */ - return (VCALL(ap->a_vp, VOFFSET(vop_ioctl), ap)); + return (VOP_IOCTL_AP(ap)); } @@ -203,7 +203,7 @@ dead_lock(ap) } if (!chkvnlock(vp)) return (0); - return (VCALL(vp, VOFFSET(vop_lock), ap)); + return (VOP_LOCK_AP(ap)); } /* -- cgit v1.1