Page MenuHomeFreeBSD

D43370.id132453.diff
No OneTemporary

D43370.id132453.diff

diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c
--- a/sys/kern/subr_bus.c
+++ b/sys/kern/subr_bus.c
@@ -1997,7 +1997,7 @@
* @internal
*/
static void
-device_set_desc_internal(device_t dev, const char* desc, int copy)
+device_set_desc_internal(device_t dev, const char* desc, bool alloced)
{
if (dev->desc && (dev->flags & DF_DESCMALLOCED)) {
free(dev->desc, M_BUS);
@@ -2005,16 +2005,10 @@
dev->desc = NULL;
}
- if (copy && desc) {
- dev->desc = malloc(strlen(desc) + 1, M_BUS, M_NOWAIT);
- if (dev->desc) {
- strcpy(dev->desc, desc);
- dev->flags |= DF_DESCMALLOCED;
- }
- } else {
- /* Avoid a -Wcast-qual warning */
- dev->desc = (char *)(uintptr_t) desc;
- }
+ if (alloced && desc)
+ dev->flags |= DF_DESCMALLOCED;
+ /* Avoid a -Wcast-qual warning */
+ dev->desc = (char *)(uintptr_t) desc;
bus_data_generation_update();
}
@@ -2029,7 +2023,27 @@
void
device_set_desc(device_t dev, const char* desc)
{
- device_set_desc_internal(dev, desc, FALSE);
+ device_set_desc_internal(dev, desc, false);
+}
+
+/**
+ * @brief Set the device's description
+ *
+ * A printf-like version of device_set_desc().
+ */
+void
+device_set_descf(device_t dev, const char *fmt, ...)
+{
+ va_list ap;
+ char *buf;
+ int ret;
+
+ va_start(ap, fmt);
+ ret = vasprintf(&buf, M_BUS, fmt, ap);
+ va_end(ap);
+ if (ret < 0)
+ buf = NULL;
+ device_set_desc_internal(dev, buf, true);
}
/**
@@ -2041,7 +2055,10 @@
void
device_set_desc_copy(device_t dev, const char* desc)
{
- device_set_desc_internal(dev, desc, TRUE);
+ char *buf;
+
+ buf = strdup_flags(desc, M_BUS, M_NOWAIT);
+ device_set_desc_internal(dev, buf, true);
}
/**
diff --git a/sys/sys/bus.h b/sys/sys/bus.h
--- a/sys/sys/bus.h
+++ b/sys/sys/bus.h
@@ -660,6 +660,7 @@
void device_quiet(device_t dev);
void device_quiet_children(device_t dev);
void device_set_desc(device_t dev, const char* desc);
+void device_set_descf(device_t dev, const char* fmt, ...) __printflike(2, 3);
void device_set_desc_copy(device_t dev, const char* desc);
int device_set_devclass(device_t dev, const char *classname);
int device_set_devclass_fixed(device_t dev, const char *classname);

File Metadata

Mime Type
text/plain
Expires
Mon, May 18, 9:01 AM (8 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33241038
Default Alt Text
D43370.id132453.diff (2 KB)

Event Timeline