Move vnode macros to their own directories
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Wed, 4 Nov 2009 18:09:51 +0000 (18:09 +0000)
committerDerrick Brashear <shadow|account-1000005@unknown>
Sun, 8 Nov 2009 16:25:57 +0000 (08:25 -0800)
The tree is inconsistent whether macros for access to vnodes are
provided by the OS directories, or in afs_osi.h. This makes things
very confusing, especially in the Linux case where macros are
provided in afs_osi.h, and then promptly redefined in
LINUX/osi_machdep.h

Adopt a convention where default macros are conditionally provided
by osi_machdep.h. Where these aren't wanted, they should be disabled
in osi_machdep.h, and OS specific versions provided in the individual
OS's directory.

Change-Id: I47bc969af3f6670db9348689b5ce60181fd44f21
Reviewed-on: http://gerrit.openafs.org/784
Tested-by: Marc Dionne <marc.c.dionne@gmail.com>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/afs/DARWIN/osi_machdep.h
src/afs/FBSD/osi_machdep.h
src/afs/LINUX/osi_machdep.h
src/afs/NBSD/osi_machdep.h
src/afs/OBSD/osi_machdep.h
src/afs/afs_osi.h

index a82d388..3fe44ff 100644 (file)
@@ -238,6 +238,24 @@ uio_t afsio_darwin_partialcopy(uio_t auio, int size);
 #define ifaddr_withnet(x) ifa_ifwithnet(x)
 #endif
 
+/* Vnode related macros */
+
+#if defined(AFS_DARWIN80_ENV)
+extern int afs_vfs_typenum;
+# define vType(vc)               vnode_vtype(AFSTOV(vc))
+# define vSetVfsp(vc, vfsp)
+# define vSetType(vc, type)      (vc)->f.m.Type = (type)
+# define SetAfsVnode(vn)         /* nothing; done in getnewvnode() */
+# define IsAfsVnode(v) (vfs_typenum(vnode_mount((v))) == afs_vfs_typenum)
+#else
+extern int (**afs_vnodeop_p) ();
+# define vType(vc)               AFSTOV(vc)->v_type
+# define vSetVfsp(vc, vfsp)      AFSTOV(vc)->v_mount = (vfsp)
+# define vSetType(vc, type)      AFSTOV(vc)->v_type = (type)
+# define IsAfsVnode(v)      ((v)->v_op == afs_vnodeop_p)
+# define SetAfsVnode(v)     /* nothing; done in getnewvnode() */
+#endif
+
 #endif /* KERNEL */
 
 #endif /* _OSI_MACHDEP_H_ */
index 0d7f81c..7086c4f 100644 (file)
@@ -40,12 +40,18 @@ typedef struct proc afs_proc_t;
 #endif
 
 #define osi_vnhold(avc,r)      vref(AFSTOV(avc))
-#undef vSetVfsp
-#define vSetVfsp(vc, vfsp)     AFSTOV(vc)->v_mount = (vfsp)
-#undef vSetType
-#define vSetType(vc, type)     AFSTOV(vc)->v_type = (type)
-#undef vType
-#define        vType(vc)               AFSTOV(vc)->v_type
+
+#define vType(vc)               AFSTOV(vc)->v_type
+#define vSetVfsp(vc, vfsp)     AFSTOV(vc)->v_mount = (vfsp)
+#define vSetType(vc, type)      AFSTOV(vc)->v_type = (type)
+#if defined(AFS_FBSD60_ENV) && defined(KERNEL)
+extern struct vop_vector afs_vnodeops;
+# define IsAfsVnode(v) ((v)->v_op == &afs_vnodeops)
+#else
+extern int (**afs_vnodeop_p) ();
+# define IsAfsVnode(v)           ((v)->v_op == afs_vnodeop_p)
+#endif
+#define SetAfsVnode(v)          /* nothing; done in getnewvnode() */
 
 #undef gop_lookupname
 #define gop_lookupname osi_lookupname
@@ -72,11 +78,7 @@ typedef struct proc afs_proc_t;
 #endif
 #define VN_HOLD(vp)            VREF(vp)
 
-#ifdef AFS_FBSD60_ENV
-#undef IsAfsVnode
-#define IsAfsVnode(v) ((v)->v_op == &afs_vnodeops)
-extern struct vop_vector afs_vnodeops;
-#endif
+
 
 #undef osi_getpid
 #if defined(AFS_FBSD50_ENV)
index 03e12b8..fb8a5f5 100644 (file)
@@ -113,14 +113,10 @@ static inline time_t osi_Time(void) {
 #define afs_suser(x) capable(CAP_SYS_ADMIN)
 #define wakeup afs_osi_Wakeup
 
-#undef vType
 #define vType(V) ((AFSTOV((V)))->i_mode & S_IFMT)
-#undef vSetType
 #define vSetType(V, type) AFSTOV((V))->i_mode = ((type) | (AFSTOV((V))->i_mode & ~S_IFMT))     /* preserve mode */
-
-#undef IsAfsVnode
+#define vSetVfsp(V, vfsp)                              /* unused */
 #define IsAfsVnode(V) ((V)->i_sb == afs_globalVFS)     /* test superblock instead */
-#undef SetAfsVnode
 #define SetAfsVnode(V)                                 /* unnecessary */
 
 /* We often need to pretend we're in user space to get memory transfers
index a8b659b..1a8fc7f 100644 (file)
@@ -85,6 +85,16 @@ extern thread_t afs_global_owner;
 #define NETPRI
 #undef USERPRI
 #define USERPRI
+
+/* Vnode related macros */
+
+extern int (**afs_vnodeop_p) ();
+#define vType(vc)               AFSTOV(vc)->v_type
+#define vSetVfsp(vc, vfsp)      AFSTOV(vc)->v_mount = (vfsp)
+#define vSetType(vc, type)      AFSTOV(vc)->v_type = (type)
+#define IsAfsVnode(v)           ((v)->v_op == afs_vnodeop_p)
+#define SetAfsVnode(v)          /* nothing; done in getnewvnode() */
+
 #endif /* KERNEL */
 
 #endif /* _OSI_MACHDEP_H_ */
index b3a6f5a..906ec10 100644 (file)
@@ -226,4 +226,12 @@ extern struct lock afs_global_lock;
 #define USERPRI splx(splvar)
 #endif /* KERNEL */
 
+/* vnodes */
+extern int (**afs_vnodeop_p) ();
+#define vType(vc)               AFSTOV(vc)->v_type
+#define vSetVfsp(vc, vfsp)      AFSTOV(vc)->v_mount = (vfsp)
+#define vSetType(vc, type)      AFSTOV(vc)->v_type = (type)
+#define IsAfsVnode(v)      ((v)->v_op == afs_vnodeop_p)
+#define SetAfsVnode(v)     /* nothing; done in getnewvnode() */
+
 #endif /* _OSI_MACHDEP_H_ */
index bc352b6..5ecfe98 100644 (file)
@@ -122,34 +122,17 @@ struct afs_osi_WaitHandle {
 #endif
 
 /*
- * Vnode related macros
+ * Default vnode related macros
+ *
+ * Darwin, all of the BSDs, and Linux have their own
  */
-#if defined(AFS_DARWIN80_ENV)
-#define vType(vc)               vnode_vtype(AFSTOV(vc))
-#define vSetVfsp(vc, vfsp)      
-#define vSetType(vc, type)      (vc)->f.m.Type = (type)
-extern int afs_vfs_typenum;
-#define SetAfsVnode(vn)         /* nothing; done in getnewvnode() */
-#define IsAfsVnode(v) (vfs_typenum(vnode_mount((v))) == afs_vfs_typenum)
-#else
-#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) || defined(AFS_LINUX22_ENV)
-#define vSetVfsp(vc, vfsp)      AFSTOV(vc)->v_mount = (vfsp)
-#define vSetType(vc, type)      AFSTOV(vc)->v_type = (type)
-#define vType(vc)               AFSTOV(vc)->v_type
-#else
-#define        vType(vc)           (vc)->v.v_type
-#define        vSetType(vc,type)   (vc)->v.v_type = (type)
-#define        vSetVfsp(vc,vfsp)   (vc)->v.v_vfsp = (vfsp)
-#endif
-#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
-extern int (**afs_vnodeop_p) ();
-#define IsAfsVnode(v)      ((v)->v_op == afs_vnodeop_p)
-#define SetAfsVnode(v)     /* nothing; done in getnewvnode() */
-#else
+#if !defined(AFS_DARWIN_ENV) && !defined(AFS_XBSD_ENV) && !defined(AFS_LINUX20_ENV)
+# define       vType(vc)           (vc)->v.v_type
+# define       vSetType(vc,type)   (vc)->v.v_type = (type)
+# define       vSetVfsp(vc,vfsp)   (vc)->v.v_vfsp = (vfsp)
 extern struct vnodeops *afs_ops;
-#define        IsAfsVnode(v)       ((v)->v_op == afs_ops)
-#define        SetAfsVnode(v)      (v)->v_op = afs_ops
-#endif
+# define       IsAfsVnode(v)       ((v)->v_op == afs_ops)
+# define       SetAfsVnode(v)      (v)->v_op = afs_ops
 #endif
 
 /*