Page MenuHomeFreeBSD

D55353.id172628.diff
No OneTemporary

D55353.id172628.diff

diff --git a/sys/sys/bus.h b/sys/sys/bus.h
--- a/sys/sys/bus.h
+++ b/sys/sys/bus.h
@@ -943,7 +943,7 @@
/**
* Generic ivar accessor generation macros for bus drivers
*/
-#define __BUS_ACCESSOR(varp, var, ivarp, ivar, type) \
+#define __BUS_ACCESSOR_COMMON(varp, var, ivarp, ivar, type) \
\
static __inline bool \
varp ## _has_ ## var(device_t dev) \
@@ -956,29 +956,47 @@
return (e == 0); \
} \
\
+static __inline void \
+varp ## _set_ ## var(device_t dev, type t) \
+{ \
+ uintptr_t v = (uintptr_t) t; \
+ int e __diagused; \
+ e = BUS_WRITE_IVAR(device_get_parent(dev), dev, \
+ ivarp ## _IVAR_ ## ivar, v); \
+ KASSERT(e == 0, ("%s failed for %s on bus %s, error = %d", \
+ __func__, device_get_nameunit(dev), \
+ device_get_nameunit(device_get_parent(dev)), e)); \
+}
+
+#define __BUS_ACCESSOR(varp, var, ivarp, ivar, type) \
+ __BUS_ACCESSOR_COMMON(varp, var, ivarp, ivar, type) \
+ \
static __inline type \
varp ## _get_ ## var(device_t dev) \
{ \
uintptr_t v = 0; \
int e __diagused; \
+ \
e = BUS_READ_IVAR(device_get_parent(dev), dev, \
ivarp ## _IVAR_ ## ivar, &v); \
KASSERT(e == 0, ("%s failed for %s on bus %s, error = %d", \
__func__, device_get_nameunit(dev), \
device_get_nameunit(device_get_parent(dev)), e)); \
return ((type) v); \
-} \
+}
+
+#define __BUS_ACCESSOR_DEFAULT(varp, var, ivarp, ivar, type, default) \
+ __BUS_ACCESSOR_COMMON(varp, var, ivarp, ivar, type) \
\
-static __inline void \
-varp ## _set_ ## var(device_t dev, type t) \
+static __inline type \
+varp ## _get_ ## var(device_t dev) \
{ \
- uintptr_t v = (uintptr_t) t; \
- int e __diagused; \
- e = BUS_WRITE_IVAR(device_get_parent(dev), dev, \
- ivarp ## _IVAR_ ## ivar, v); \
- KASSERT(e == 0, ("%s failed for %s on bus %s, error = %d", \
- __func__, device_get_nameunit(dev), \
- device_get_nameunit(device_get_parent(dev)), e)); \
+ uintptr_t v = 0; \
+ int e; \
+ \
+ e = BUS_READ_IVAR(device_get_parent(dev), dev, \
+ ivarp ## _IVAR_ ## ivar, &v); \
+ return (e == 0 ? (type) v : (default)); \
}
struct device_location_cache;

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 28, 12:37 PM (10 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28995059
Default Alt Text
D55353.id172628.diff (2 KB)

Event Timeline