Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/pgoyette-compat]: src/sys/sys Rename sys/compat_hook.h --> sys/module_ho...
details: https://anonhg.NetBSD.org/src/rev/7fa43e7ddf74
branches: pgoyette-compat
changeset: 830724:7fa43e7ddf74
user: pgoyette <pgoyette%NetBSD.org@localhost>
date: Tue Sep 18 21:38:08 2018 +0000
description:
Rename sys/compat_hook.h --> sys/module_hook.h to more accurately
state its intended usage
diffstat:
sys/sys/compat_hook.h | 187 --------------------------------------------------
sys/sys/compat_stub.h | 4 +-
sys/sys/module_hook.h | 187 ++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 189 insertions(+), 189 deletions(-)
diffs (truncated from 400 to 300 lines):
diff -r 2594e98c8148 -r 7fa43e7ddf74 sys/sys/compat_hook.h
--- a/sys/sys/compat_hook.h Tue Sep 18 10:35:04 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,187 +0,0 @@
-/* $NetBSD: compat_hook.h,v 1.1.2.1 2018/09/18 03:32:35 pgoyette Exp $ */
-
-/*-
- * Copyright (c) 2018 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Paul Goyette
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _SYS_COMPAT_HOOK_H
-#define _SYS_COMPAT_HOOK_H
-
-#include <sys/param.h> /* for COHERENCY_UNIT, for __cacheline_aligned */
-#include <sys/mutex.h>
-#include <sys/localcount.h>
-#include <sys/condvar.h>
-#include <sys/pserialize.h>
-#include <sys/atomic.h>
-
-/*
- * Macros for creating MP-safe vectored function calls, where
- * the function implementations are in modules which could be
- * unloaded.
- */
-
-#define COMPAT_HOOK(hook,args) \
-extern struct hook ## _t { \
- kmutex_t mtx; \
- kcondvar_t cv; \
- struct localcount lc; \
- pserialize_t psz; \
- bool hooked; \
- int (*f)args; \
-} hook __cacheline_aligned;
-
-#define COMPAT_HOOK2(hook,args1,args2) \
-extern struct hook ## _t { \
- kmutex_t mtx; \
- kcondvar_t cv; \
- struct localcount lc; \
- pserialize_t psz; \
- bool hooked; \
- int (*f1)args1; \
- int (*f2)args2; \
-} hook __cacheline_aligned;
-
-#define COMPAT_SET_HOOK(hook, waitchan, func) \
-static void hook ## _set(void); \
-static void hook ## _set(void) \
-{ \
- \
- KASSERT(!hook.hooked); \
- \
- hook.psz = pserialize_create(); \
- mutex_init(&hook.mtx, MUTEX_DEFAULT, IPL_NONE); \
- cv_init(&hook.cv, waitchan); \
- localcount_init(&hook.lc); \
- hook.f = func; \
- \
- /* Make sure it's initialized before anyone uses it */ \
- membar_producer(); \
- \
- /* Let them use it */ \
- hook.hooked = true; \
-}
-
-#define COMPAT_SET_HOOK2(hook, waitchan, func1, func2) \
-static void hook ## _set(void); \
-static void hook ## _set(void) \
-{ \
- \
- KASSERT(!hook.hooked); \
- \
- hook.psz = pserialize_create(); \
- mutex_init(&hook.mtx, MUTEX_DEFAULT, IPL_NONE); \
- cv_init(&hook.cv, waitchan); \
- localcount_init(&hook.lc); \
- hook.f1 = func1; \
- hook.f2 = func2; \
- \
- /* Make sure it's initialized before anyone uses it */ \
- membar_producer(); \
- \
- /* Let them use it */ \
- hook.hooked = true; \
-}
-
-#define COMPAT_UNSET_HOOK(hook) \
-static void (hook ## _unset)(void); \
-static void (hook ## _unset)(void) \
-{ \
- \
- KASSERT(kernconfig_is_held()); \
- KASSERT(hook.hooked); \
- KASSERT(hook.f); \
- \
- /* Prevent new localcount_acquire calls. */ \
- hook.hooked = false; \
- \
- /* Wait for existing localcount_acquire calls to drain. */ \
- pserialize_perform(hook.psz); \
- \
- /* Wait for existing localcount references to drain. */\
- localcount_drain(&hook.lc, &hook.cv, &hook.mtx); \
- \
- localcount_fini(&hook.lc); \
- cv_destroy(&hook.cv); \
- mutex_destroy(&hook.mtx); \
- pserialize_destroy(hook.psz); \
-}
-
-#define COMPAT_UNSET_HOOK2(hook) \
-static void (hook ## _unset)(void); \
-static void (hook ## _unset)(void) \
-{ \
- \
- KASSERT(kernconfig_is_held()); \
- KASSERT(hook.hooked); \
- KASSERT(hook.f1); \
- KASSERT(hook.f2); \
- \
- /* Prevent new localcount_acquire calls. */ \
- hook.hooked = false; \
- \
- /* Wait for existing localcount_acquire calls to drain. */ \
- pserialize_perform(hook.psz); \
- \
- /* Wait for existing localcount references to drain. */\
- localcount_drain(&hook.lc, &hook.cv, &hook.mtx); \
- \
- localcount_fini(&hook.lc); \
- cv_destroy(&hook.cv); \
- mutex_destroy(&hook.mtx); \
- pserialize_destroy(hook.psz); \
-}
-
-#define COMPAT_CALL_HOOK_DECL(hook, which, decl, args, default) \
-int \
-hook ## _ ## which ## _call decl;
-#define COMPAT_CALL_HOOK(hook, which, decl, args, default) \
-int \
-hook ## _ ## which ## _call decl \
-{ \
- bool hooked; \
- int error, s; \
- \
- s = pserialize_read_enter(); \
- hooked = hook.hooked; \
- if (hooked) { \
- membar_consumer(); \
- localcount_acquire(&hook.lc); \
- } \
- pserialize_read_exit(s); \
- \
- if (hooked) { \
- error = (*hook.which)args; \
- localcount_release(&hook.lc, &hook.cv, \
- &hook.mtx); \
- } else { \
- error = default; \
- } \
- return error; \
-}
-
-#endif /* _SYS_COMPAT_HOOK_H */
diff -r 2594e98c8148 -r 7fa43e7ddf74 sys/sys/compat_stub.h
--- a/sys/sys/compat_stub.h Tue Sep 18 10:35:04 2018 +0000
+++ b/sys/sys/compat_stub.h Tue Sep 18 21:38:08 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.h,v 1.1.2.26 2018/09/18 10:34:08 pgoyette Exp $ */
+/* $NetBSD: compat_stub.h,v 1.1.2.27 2018/09/18 21:38:08 pgoyette Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
#ifndef _SYS_COMPAT_STUB_H
#define _SYS_COMPAT_STUB_H
-#include <sys/compat_hook.h>
+#include <sys/module_hook.h>
/*
* Routine hooks for compat_50___sys_ntp_gettime
diff -r 2594e98c8148 -r 7fa43e7ddf74 sys/sys/module_hook.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/sys/module_hook.h Tue Sep 18 21:38:08 2018 +0000
@@ -0,0 +1,187 @@
+/* $NetBSD: module_hook.h,v 1.1.2.1 2018/09/18 21:38:08 pgoyette Exp $ */
+
+/*-
+ * Copyright (c) 2018 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Paul Goyette
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _SYS_MODULE_HOOK_H
+#define _SYS_MODULE_HOOK_H
+
+#include <sys/param.h> /* for COHERENCY_UNIT, for __cacheline_aligned */
+#include <sys/mutex.h>
+#include <sys/localcount.h>
+#include <sys/condvar.h>
+#include <sys/pserialize.h>
+#include <sys/atomic.h>
+
+/*
+ * Macros for creating MP-safe vectored function calls, where
+ * the function implementations are in modules which could be
+ * unloaded.
+ */
+
+#define MODULE_HOOK(hook,args) \
+extern struct hook ## _t { \
+ kmutex_t mtx; \
+ kcondvar_t cv; \
+ struct localcount lc; \
+ pserialize_t psz; \
+ bool hooked; \
+ int (*f)args; \
+} hook __cacheline_aligned;
+
+#define MODULE_HOOK2(hook,args1,args2) \
+extern struct hook ## _t { \
+ kmutex_t mtx; \
+ kcondvar_t cv; \
+ struct localcount lc; \
+ pserialize_t psz; \
+ bool hooked; \
+ int (*f1)args1; \
+ int (*f2)args2; \
+} hook __cacheline_aligned;
+
+#define MODULE_SET_HOOK(hook, waitchan, func) \
+static void hook ## _set(void); \
+static void hook ## _set(void) \
+{ \
+ \
+ KASSERT(!hook.hooked); \
+ \
+ hook.psz = pserialize_create(); \
+ mutex_init(&hook.mtx, MUTEX_DEFAULT, IPL_NONE); \
+ cv_init(&hook.cv, waitchan); \
+ localcount_init(&hook.lc); \
+ hook.f = func; \
+ \
+ /* Make sure it's initialized before anyone uses it */ \
+ membar_producer(); \
+ \
+ /* Let them use it */ \
+ hook.hooked = true; \
+}
Home |
Main Index |
Thread Index |
Old Index