Port cache manager to NetBSD-5 and NetBSD-current
[openafs.git] / src / afs / NBSD / osi_machdep.h
index 5b86606..d80ef35 100644 (file)
@@ -9,7 +9,7 @@
 
 /*
  *
- * OpenBSD OSI header file. Extends afs_osi.h.
+ * NetBSD OSI header file. Extends afs_osi.h.
  *
  * afs_osi.h includes this file, which is the only way this file should
  * be included in a source file. This file can redefine macros declared in
 #include <sys/mutex.h>
 #include <sys/rwlock.h>
 #endif
-#include <sys/malloc.h>
 #include <sys/syscall.h>
 #include <sys/syscallargs.h>
 
-#ifndef AFS_NBSD50_ENV
-/* Why are we including the rump debugger? */
-#include "opt_ddb.h" /* Debugger() */
-#endif
-
 #if defined(AFS_NBSD50_ENV)
 # if !defined(DEF_CADDR_T)
 typedef char * caddr_t;
@@ -45,11 +39,6 @@ typedef char * caddr_t;
 # endif
 #endif
 
-#define M_AFSFID       (M_TEMP-1)
-#define M_AFSBUFHDR    (M_TEMP-2)
-#define M_AFSBUFFER    (M_TEMP-3)
-#define M_AFSGENERIC   (M_TEMP-4)
-
 /* vfs */
 #define osi_vfs                mount
 #define osi_vfs_bsize  mnt_stat.f_bsize
@@ -61,16 +50,9 @@ typedef char * caddr_t;
 #endif
 #define vfs_vnodecovered mnt_vnodecovered
 #define v_vfsp         v_mount
-#define VFS_STATFS      afs_statvfs
-
-#ifndef AFS_NBSD50_ENV
-/* Defined in sys/syscallargs.h */
-int
-sys_ioctl(struct lwp *l, void *v, register_t *retval);
-#endif
 
 /* vnode */
-#define VN_HOLD(vp)    (vref(vp))
+#define VN_HOLD(vp)    (vget(vp, 0))
 #define VN_RELE(vp)    (vrele(vp))
 #define osi_vnhold(avc, r) (VN_HOLD(AFSTOV(avc)))
 
@@ -96,107 +78,30 @@ struct afs_sysargs {
 #define AFS_UIOSYS     UIO_SYSSPACE
 #define AFS_UIOUSER    UIO_USERSPACE
 
-/* malloc */
-inline void * afs_osi_Alloc(size_t asize);
-inline void * afs_osi_Alloc_NoSleep(size_t asize);
-extern void *osi_nbsd_Alloc(size_t asize, int cansleep);
-extern void osi_nbsd_Free(void *p, size_t asize);
-
-#ifdef AFS_KALLOC
-#undef AFS_KALLOC
-#define AFS_KALLOC(s) (osi_nbsd_Alloc((s), 1 /* cansleep */))
-#endif
-
-#ifdef AFS_KFREE
-#undef AFS_KFREE
-#define AFS_KFREE(p, s) (osi_nbsd_Free((p), (s)))
-#endif
-
-
 /* proc */
 typedef struct lwp afs_proc_t;
 #define osi_curproc()  curlwp
 #define getpid()       (osi_curproc())->l_proc->p_pid
 #define osi_procname(procname, size) strncpy(procname, curproc->p_comm, size)
 
-/*
- * XXX  I'm exporting the internal definition of kauth_cred_t
- * until I work out protocol for switching group buffers.
- * Matt.
- */
-
-#define KAUTH_EXPORT 1
-#if defined(KAUTH_EXPORT)
-/* internal type from kern_auth.c */
-#if defined(AFS_NBSD50_ENV)
-/*
- * Credentials.
- *
- * A subset of this structure is used in kvm(3) (src/lib/libkvm/kvm_proc.c)
- * and should be synchronized with this structure when the update is
- * relevant.
- */
-struct kauth_cred {
-       /*
-        * Ensure that the first part of the credential resides in its own
-        * cache line.  Due to sharing there aren't many kauth_creds in a
-        * typical system, but the reference counts change very often.
-        * Keeping it seperate from the rest of the data prevents false
-        * sharing between CPUs.
-        */
-       u_int cr_refcnt;                /* reference count */
-#if COHERENCY_UNIT > 4
-       uint8_t cr_pad[COHERENCY_UNIT - 4];
-#endif
-       uid_t cr_uid;                   /* user id */
-       uid_t cr_euid;                  /* effective user id */
-       uid_t cr_svuid;                 /* saved effective user id */
-       gid_t cr_gid;                   /* group id */
-       gid_t cr_egid;                  /* effective group id */
-       gid_t cr_svgid;                 /* saved effective group id */
-       u_int cr_ngroups;               /* number of groups */
-       gid_t cr_groups[NGROUPS];       /* group memberships */
-       specificdata_reference cr_sd;   /* specific data */
-};
-#elif defined(AFS_NBSD40_ENV)
-struct kauth_cred {
-       struct simplelock cr_lock;      /* lock on cr_refcnt */
-       u_int cr_refcnt;                /* reference count */
-       uid_t cr_uid;                   /* user id */
-       uid_t cr_euid;                  /* effective user id */
-       uid_t cr_svuid;                 /* saved effective user id */
-       gid_t cr_gid;                   /* group id */
-       gid_t cr_egid;                  /* effective group id */
-       gid_t cr_svgid;                 /* saved effective group id */
-       u_int cr_ngroups;               /* number of groups */
-       gid_t cr_groups[NGROUPS];       /* group memberships */
-};
-#else
-#error TODO:  verify kauth_cred structure, if this is still here
-#endif /* AFS_NBSD40_ENV */
-#endif /* KAUTH_EXPORT */
-
-typedef kauth_cred_t afs_ucred_t;
+typedef struct kauth_cred afs_ucred_t;
 #define osi_curcred()  (kauth_cred_get())
 #define afs_suser(x)   afs_osi_suser(osi_curcred())
 #define osi_crgetruid(acred) (kauth_cred_getuid(acred))
 #define osi_crgetrgid(acred) (kauth_cred_getgid(acred))
 #define osi_crngroups(acred) (kauth_cred_ngroups(acred))
-#define osi_proccred(aproc) (aproc->p_cred)
-#define osi_crdup(acred) (kauth_cred_dup(acred))
-#define crref osi_crdup
-#define crdup osi_crdup
-#define crhold crref
+#define osi_proccred(aproc) ((aproc)->l_proc->p_cred)
+#define osi_crgroupbyid kauth_cred_group
+#define crdup kauth_cred_dup
+#define crhold kauth_cred_hold
 #define crfree kauth_cred_free
 
 #define afs_cr_gid osi_crgetrgid
 #define afs_cr_uid osi_crgetruid
 
-inline gid_t osi_crgroupbyid(afs_ucred_t *acred, int gindex);
-
 /* time */
 #define        afs_hz          hz
-#define osi_GetTime(x) microtime(x)
+#define osi_GetTime(x) getmicrotime(x)
 #define osi_Time()      time_second
 
 /* str */
@@ -215,10 +120,9 @@ inline gid_t osi_crgroupbyid(afs_ucred_t *acred, int gindex);
 /* This is not always in scope yet */
 struct vcache;
 
-extern int afs_nbsd_lookupname(char *fnamep, enum uio_seg segflg,
+extern int afs_nbsd_lookupname(const char *fnamep, enum uio_seg segflg,
                               int followlink, struct vnode **compvpp);
 extern void afs_nbsd_getnewvnode(struct vcache *tvc);
-extern int afs_vget();
 
 #undef gop_lookupname
 #undef gop_lookupname_user
@@ -297,12 +201,15 @@ enum vcexcl { NONEXCL, EXCL };
 #endif /* ASSEMBLER */
 
 /* vnodes */
-extern int (**afs_vnodeop_p) ();
+extern int (**afs_vnodeop_p) __P((void *));
 #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() */
 
+extern int afs_debug;
+
+#define AFS_USE_NBSD_NAMECACHE 0
 
 #endif /* _OSI_MACHDEP_H_ */