diff options
author | Ulrich Ölmann <u.oelmann@pengutronix.de> | 2018-12-18 14:58:01 +0100 |
---|---|---|
committer | Roland Hieber <rhi@pengutronix.de> | 2019-01-07 15:47:56 +0100 |
commit | 75d8bdaccb7c8c7eaae2e6ccd8d7b7170c4fa18a (patch) | |
tree | 05c4c9f3d2ed62cf06a5adc100d602cbc88f62b3 | |
parent | d50f2d8fe6051527d94f2ed1da2ce1b4acab6d0b (diff) | |
download | dt-utils-75d8bdaccb7c8c7eaae2e6ccd8d7b7170c4fa18a.tar.gz dt-utils-75d8bdaccb7c8c7eaae2e6ccd8d7b7170c4fa18a.tar.xz |
Introduce dev_set_name()
This ports the following barebox commit:
| commit 05683764a77ff91419cabe0c26e537589b8a28ff
| Author: Andrey Smirnov <andrew.smirnov@gmail.com>
| Date: Tue Oct 16 12:15:40 2018 -0700
|
| drivers: Introduce dev_set_name()
|
| Introduce dev_set_name() in order to hide implementation details of
| setting device's name so it'd be easier to change it.
|
| Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
| Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>
Signed-off-by: Roland Hieber <rhi@pengutronix.de>
-rw-r--r-- | src/barebox-state/state.c | 2 | ||||
-rw-r--r-- | src/dt/common.h | 26 |
2 files changed, 27 insertions, 1 deletions
diff --git a/src/barebox-state/state.c b/src/barebox-state/state.c index d5b1ddd..fd3cbbc 100644 --- a/src/barebox-state/state.c +++ b/src/barebox-state/state.c @@ -178,7 +178,7 @@ static struct state *state_new(const char *name) int ret; state = xzalloc(sizeof(*state)); - safe_strncpy(state->dev.name, name, MAX_DRIVER_NAME); + dev_set_name(&state->dev, name); state->name = state->dev.name; state->dev.id = DEVICE_ID_SINGLE; INIT_LIST_HEAD(&state->variables); diff --git a/src/dt/common.h b/src/dt/common.h index cbe17ce..de8d293 100644 --- a/src/dt/common.h +++ b/src/dt/common.h @@ -406,6 +406,32 @@ static inline struct param_d *dev_add_param_uint32(struct device_d *dev, const c return NULL; } +/** + * dev_set_name - set a device name + * @dev: device + * @fmt: format string for the device's name + */ +static inline int dev_set_name(struct device_d *dev, const char *fmt, ...) +{ + char newname[MAX_DRIVER_NAME]; + va_list vargs; + int err; + + va_start(vargs, fmt); + err = vsnprintf(newname, MAX_DRIVER_NAME, fmt, vargs); + va_end(vargs); + + /* + * Copy new name into dev structure, we do this after vsnprintf call in + * case old device name was in one of vargs + */ + safe_strncpy(dev->name, newname, MAX_DRIVER_NAME); + + WARN_ON(err < 0); + + return err; +} + struct driver_d; static inline int register_driver(struct driver_d *d) |