PERFORCE change 117185 for review
John Baldwin
jhb at FreeBSD.org
Mon Apr 2 13:48:18 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=117185
Change 117185 by jhb at jhb_mutex on 2007/04/02 13:47:39
Merge in MAKE_SYSENT() macro from jhb_lock.
Affected files ...
.. //depot/projects/smpng/sys/nfsserver/nfs_srvsubs.c#38 integrate
.. //depot/projects/smpng/sys/sys/sysent.h#24 integrate
Differences ...
==== //depot/projects/smpng/sys/nfsserver/nfs_srvsubs.c#38 (text+ko) ====
@@ -100,11 +100,7 @@
static int nfssvc_offset = SYS_nfssvc;
static struct sysent nfssvc_prev_sysent;
-static struct sysent nfssvc_sysent = {
- sizeof(struct nfssvc_args) / sizeof(register_t),
- (sy_call_t *)&nfssvc,
- AUE_NFS_SVC
-};
+MAKE_SYSENT(nfssvc);
struct mtx nfsd_mtx;
@@ -527,6 +523,7 @@
static int
nfsrv_modevent(module_t mod, int type, void *data)
{
+ static int registered;
int error = 0;
NET_LOCK_GIANT();
@@ -559,8 +556,11 @@
NFSD_UNLOCK();
nfsrv_timer(0);
- (void)syscall_register(&nfssvc_offset, &nfssvc_sysent,
+ error = syscall_register(&nfssvc_offset, &nfssvc_sysent,
&nfssvc_prev_sysent);
+ if (error)
+ break;
+ registered = 1;
break;
case MOD_UNLOAD:
@@ -569,8 +569,10 @@
break;
}
+ if (registered)
+ syscall_deregister(&nfssvc_offset, &nfssvc_prev_sysent);
callout_drain(&nfsrv_callout);
- syscall_deregister(&nfssvc_offset, &nfssvc_prev_sysent);
+ nfsrv_destroycache(); /* Free the server request cache */
nfsrv_destroycache(); /* Free the server request cache */
mtx_destroy(&nfsd_mtx);
break;
==== //depot/projects/smpng/sys/sys/sysent.h#24 (text+ko) ====
@@ -119,6 +119,14 @@
struct sysent old_sysent; /* old sysent */
};
+#define MAKE_SYSENT(syscallname) \
+static struct sysent syscallname##_sysent = { \
+ (sizeof(struct syscallname ## _args ) \
+ / sizeof(register_t)), \
+ (sy_call_t *)& syscallname, \
+ SYS_AUE_##syscallname \
+}
+
#define SYSCALL_MODULE(name, offset, new_sysent, evh, arg) \
static struct syscall_module_data name##_syscall_mod = { \
evh, arg, offset, new_sysent, { 0, NULL, AUE_NULL } \
@@ -133,12 +141,7 @@
#define SYSCALL_MODULE_HELPER(syscallname) \
static int syscallname##_syscall = SYS_##syscallname; \
-static struct sysent syscallname##_sysent = { \
- (sizeof(struct syscallname ## _args ) \
- / sizeof(register_t)), \
- (sy_call_t *)& syscallname, \
- SYS_AUE_##syscallname \
-}; \
+MAKE_SYSENT(syscallname); \
SYSCALL_MODULE(syscallname, \
& syscallname##_syscall, & syscallname##_sysent, \
NULL, NULL);
More information about the p4-projects
mailing list