From 791b7a4c660ef468286eb6f51e66b4faa4bb6c7b Mon Sep 17 00:00:00 2001 From: Ben Kaduk Date: Tue, 28 Sep 2010 20:03:25 -0400 Subject: [PATCH] More FBSD syscall tweaking We're now properly registered in syscalls.master for HEAD (i.e. proto-9.0) and RELENG_8 (proto-8.2), which means that afs3_syscall is prototyped in sys/sysproto.h . Accordingly, don't declare it in afs_prototypes.h for those cases. Also add FBSD82_ENV checks for the new syscall-registration code, and cast afs3_syscall to sy_call_t* for the sysent structure. Change-Id: I0e7427274b018043c3a6a8ca6181a78a385d9aa2 Reviewed-on: http://gerrit.openafs.org/2864 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/afs/FBSD/osi_vfsops.c | 12 ++++++------ src/afs/afs_prototypes.h | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/afs/FBSD/osi_vfsops.c b/src/afs/FBSD/osi_vfsops.c index 23079f0..d3e6c57 100644 --- a/src/afs/FBSD/osi_vfsops.c +++ b/src/afs/FBSD/osi_vfsops.c @@ -20,14 +20,14 @@ int afs_pbuf_freecnt = -1; extern int Afs_xsetgroups(); extern int afs_xioctl(); -#if !defined(AFS_FBSD90_ENV) +#if !defined(AFS_FBSD90_ENV) && !defined(AFS_FBSD82_ENV) static sy_call_t *old_handler; #else static struct sysent old_sysent; static struct sysent afs_sysent = { 5, /* int sy_narg */ - afs3_syscall, /* sy_call_t *sy_call */ + (sy_call_t *) afs3_syscall, /* sy_call_t *sy_call */ #ifdef AFS_FBSD60_ENV AUE_NULL, /* au_event_t sy_auevent */ #ifdef AFS_FBSD70_ENV @@ -48,7 +48,7 @@ afs_init(struct vfsconf *vfc) { int code; int offset = AFS_SYSCALL; -#if defined(AFS_FBSD90_ENV) +#if defined(AFS_FBSD90_ENV) || defined(AFS_FBSD82_ENV) code = syscall_register(&offset, &afs_sysent, &old_sysent); if (code) { printf("AFS_SYSCALL in use, error %i. aborting\n", code); @@ -63,7 +63,7 @@ afs_init(struct vfsconf *vfc) #endif osi_Init(); afs_pbuf_freecnt = nswbuf / 2 + 1; -#if !defined(AFS_FBSD90_ENV) +#if !defined(AFS_FBSD90_ENV) && !defined(AFS_FBSD82_ENV) old_handler = sysent[AFS_SYSCALL].sy_call; sysent[AFS_SYSCALL].sy_call = afs3_syscall; sysent[AFS_SYSCALL].sy_narg = 5; @@ -74,13 +74,13 @@ afs_init(struct vfsconf *vfc) int afs_uninit(struct vfsconf *vfc) { -#if defined(AFS_FBSD90_ENV) +#if defined(AFS_FBSD90_ENV) || defined(AFS_FBSD82_ENV) int offset = AFS_SYSCALL; #endif if (afs_globalVFS) return EBUSY; -#if defined(AFS_FBSD90_ENV) +#if defined(AFS_FBSD90_ENV) || defined(AFS_FBSD82_ENV) syscall_deregister(&offset, &old_sysent); #else sysent[AFS_SYSCALL].sy_narg = 0; diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h index 979d78d..1993679 100644 --- a/src/afs/afs_prototypes.h +++ b/src/afs/afs_prototypes.h @@ -903,6 +903,8 @@ extern int copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst); #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) #ifdef AFS_DARWIN100_ENV extern int afs3_syscall(afs_proc_t *p, void *args, unsigned int *retval); +#elif defined(AFS_FBSD90_ENV) || defined(AFS_FBSD82_ENV) +/* afs3_syscall prototype is in sys/sysproto.h */ #elif defined(AFS_FBSD_ENV) extern int afs3_syscall(struct thread *p, void *args); #elif defined(AFS_NBSD40_ENV) -- 1.9.4