summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Mauderer <Christian.Mauderer@embedded-brains.de>2017-11-08 10:44:48 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-11-10 14:13:18 +0100
commite7f3260886b8819657b5faf7eee50fe422314ae6 (patch)
treec74413446c4bfa3f14a5d140d1c93282f6aaef16
parentec29b2a0c25c1c5fc3f213c0da1b6156a4dd4cdc (diff)
freebsd/bus: Check return value of bus_accessor.
-rw-r--r--freebsd/sys/sys/bus.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/freebsd/sys/sys/bus.h b/freebsd/sys/sys/bus.h
index 61cb5b9c..e882823d 100644
--- a/freebsd/sys/sys/bus.h
+++ b/freebsd/sys/sys/bus.h
@@ -781,6 +781,7 @@ DECLARE_MODULE(name##_##busname, name##_##busname##_mod, \
/**
* Generic ivar accessor generation macros for bus drivers
*/
+#ifndef __rtems__
#define __BUS_ACCESSOR(varp, var, ivarp, ivar, type) \
\
static __inline type varp ## _get_ ## var(device_t dev) \
@@ -797,6 +798,28 @@ static __inline void varp ## _set_ ## var(device_t dev, type t) \
BUS_WRITE_IVAR(device_get_parent(dev), dev, \
ivarp ## _IVAR_ ## ivar, v); \
}
+#else /* __rtems__ */
+#define __BUS_ACCESSOR(varp, var, ivarp, ivar, type) \
+ \
+static __inline type varp ## _get_ ## var(device_t dev) \
+{ \
+ uintptr_t v; \
+ int err; \
+ err = BUS_READ_IVAR(device_get_parent(dev), dev, \
+ ivarp ## _IVAR_ ## ivar, &v); \
+ BSD_ASSERT(err == 0); \
+ return ((type) v); \
+} \
+ \
+static __inline void varp ## _set_ ## var(device_t dev, type t) \
+{ \
+ uintptr_t v = (uintptr_t) t; \
+ int err; \
+ BUS_WRITE_IVAR(device_get_parent(dev), dev, \
+ ivarp ## _IVAR_ ## ivar, v); \
+ BSD_ASSERT(err == 0); \
+}
+#endif /* __rtems__ */
/**
* Shorthand macros, taking resource argument