Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/external/bsd/drm2/include/linux Fill out <linux/rcupdate...



details:   https://anonhg.NetBSD.org/src/rev/5a770e4a90df
branches:  trunk
changeset: 992712:5a770e4a90df
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Mon Aug 27 07:34:23 2018 +0000

description:
Fill out <linux/rcupdate.h>.  The patent is expired, right?

diffstat:

 sys/external/bsd/drm2/include/linux/rcupdate.h |  48 +++++++++++++++++++++++++-
 1 files changed, 47 insertions(+), 1 deletions(-)

diffs (62 lines):

diff -r 580ab0dd07f7 -r 5a770e4a90df sys/external/bsd/drm2/include/linux/rcupdate.h
--- a/sys/external/bsd/drm2/include/linux/rcupdate.h    Mon Aug 27 07:34:13 2018 +0000
+++ b/sys/external/bsd/drm2/include/linux/rcupdate.h    Mon Aug 27 07:34:23 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: rcupdate.h,v 1.3 2018/08/27 07:31:06 riastradh Exp $   */
+/*     $NetBSD: rcupdate.h,v 1.4 2018/08/27 07:34:23 riastradh Exp $   */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -32,6 +32,52 @@
 #ifndef _LINUX_RCUPDATE_H_
 #define _LINUX_RCUPDATE_H_
 
+#include <sys/atomic.h>
+#include <sys/null.h>
+#include <sys/xcall.h>
+
 #define        __rcu
 
+#define        rcu_assign_pointer(P, V) do {                                         \
+       membar_producer();                                                    \
+       (P) = (V);                                                            \
+} while (0)
+
+
+#define        rcu_dereference(P)      rcu_dereference_protected((P), 1)
+
+#define        rcu_dereference_protected(P, C) ({                                    \
+       WARN_ON(!(C));                                                        \
+       typeof(*(P)) *__rcu_dereference_protected_tmp = (P);                  \
+       membar_datadep_consumer();                                            \
+       __rcu_dereference_protected_tmp;                                      \
+})
+
+static inline void
+rcu_read_lock(void)
+{
+
+       kpreempt_disable();
+       __insn_barrier();
+}
+
+static inline void
+rcu_read_unlock(void)
+{
+
+       __insn_barrier();
+       kpreempt_enable();
+}
+
+static inline void
+synchronize_rcu_xc(void *a, void *b)
+{
+}
+
+static inline void
+synchronize_rcu(void)
+{
+       xc_wait(xc_broadcast(0, &synchronize_rcu_xc, NULL, NULL));
+}
+
 #endif  /* _LINUX_RCUPDATE_H_ */



Home | Main Index | Thread Index | Old Index