mirror of
https://git.openafs.org/openafs.git
synced 2025-01-20 07:51:00 +00:00
FBSD restore old syscall register logic for older kernels
The syscall_register code appears to depend on coordination with FreeBSD upstream, which hopefully can be completed by RELENG_9. Use the original code for installation of the AFS syscall everything older than that. Change-Id: I2954cf1a2ae3587a311e8133ec5cdc500b4e2e24 Reviewed-on: http://gerrit.openafs.org/2618 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
parent
a9958b34a9
commit
df4cf75b97
@ -20,6 +20,9 @@ int afs_pbuf_freecnt = -1;
|
||||
extern int Afs_xsetgroups();
|
||||
extern int afs_xioctl();
|
||||
|
||||
#if !defined(AFS_FBSD90_ENV)
|
||||
static sy_call_t *old_handler;
|
||||
#else
|
||||
static struct sysent old_sysent;
|
||||
|
||||
static struct sysent afs_sysent = {
|
||||
@ -38,32 +41,51 @@ static struct sysent afs_sysent = {
|
||||
#endif
|
||||
#endif /* FBSD60 */
|
||||
};
|
||||
#endif /* FBSD90 */
|
||||
|
||||
int
|
||||
afs_init(struct vfsconf *vfc)
|
||||
{
|
||||
int code;
|
||||
int offset = AFS_SYSCALL;
|
||||
|
||||
#if defined(AFS_FBSD90_ENV)
|
||||
code = syscall_register(&offset, &afs_sysent, &old_sysent);
|
||||
if (code) {
|
||||
printf("AFS_SYSCALL in use, error %i. aborting\n", code);
|
||||
return code;
|
||||
}
|
||||
#else
|
||||
if (sysent[AFS_SYSCALL].sy_call != nosys
|
||||
&& sysent[AFS_SYSCALL].sy_call != lkmnosys) {
|
||||
printf("AFS_SYSCALL in use. aborting\n");
|
||||
return EBUSY;
|
||||
}
|
||||
#endif
|
||||
osi_Init();
|
||||
afs_pbuf_freecnt = nswbuf / 2 + 1;
|
||||
|
||||
#if !defined(AFS_FBSD90_ENV)
|
||||
old_handler = sysent[AFS_SYSCALL].sy_call;
|
||||
sysent[AFS_SYSCALL].sy_call = afs3_syscall;
|
||||
sysent[AFS_SYSCALL].sy_narg = 5;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
afs_uninit(struct vfsconf *vfc)
|
||||
{
|
||||
#if defined(AFS_FBSD90_ENV)
|
||||
int offset = AFS_SYSCALL;
|
||||
#endif
|
||||
|
||||
if (afs_globalVFS)
|
||||
return EBUSY;
|
||||
#if defined(AFS_FBSD90_ENV)
|
||||
syscall_deregister(&offset, &old_sysent);
|
||||
#else
|
||||
sysent[AFS_SYSCALL].sy_narg = 0;
|
||||
sysent[AFS_SYSCALL].sy_call = old_handler;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user