diff options
author | arr <arr@FreeBSD.org> | 2002-03-18 07:45:30 +0000 |
---|---|---|
committer | arr <arr@FreeBSD.org> | 2002-03-18 07:45:30 +0000 |
commit | 25a6daa8288f53030d945a2021b249fe06e777bb (patch) | |
tree | c2eff913b2ef7378688b056e3fde7b549d509901 /sys/kern/kern_syscalls.c | |
parent | a5aa67ad0898927e353a7f6c1a4d8b3a03bcca39 (diff) | |
download | FreeBSD-src-25a6daa8288f53030d945a2021b249fe06e777bb.zip FreeBSD-src-25a6daa8288f53030d945a2021b249fe06e777bb.tar.gz |
- Lock down the ``module'' structure by adding an SX lock that is used by
all the global bits of ``module'' data. This commit adds a few generic
macros, MOD_SLOCK, MOD_XLOCK, etc., that are meant to be used as ways
of accessing the SX lock. It is also the first step in helping to lock
down the kernel linker and module systems.
Reviewed by: jhb, jake, smp@
Diffstat (limited to 'sys/kern/kern_syscalls.c')
-rw-r--r-- | sys/kern/kern_syscalls.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/kern/kern_syscalls.c b/sys/kern/kern_syscalls.c index 4dd623e..2867bc9 100644 --- a/sys/kern/kern_syscalls.c +++ b/sys/kern/kern_syscalls.c @@ -30,6 +30,9 @@ #include <sys/sysproto.h> #include <sys/sysent.h> #include <sys/syscall.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/sx.h> #include <sys/module.h> /* @@ -96,7 +99,9 @@ syscall_module_handler(struct module *mod, int what, void *arg) if (error) return error; ms.intval = *data->offset; + MOD_XLOCK; module_setspecific(mod, &ms); + MOD_XUNLOCK; if (data->chainevh) error = data->chainevh(mod, what, data->chainarg); return error; |