diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2015-04-27 16:11:29 +0200 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2015-04-28 14:21:58 +0200 |
commit | d5025409ebccc4f39ffe9dc939ccd324f81711d5 (patch) | |
tree | 884e8b0e15074d0ba552e8ff31732cc03c425807 | |
parent | 7b4a5ce7ac99b3a332324b4d0cd5691c5b38528d (diff) | |
download | dt-utils-d5025409ebccc4f39ffe9dc939ccd324f81711d5.tar.gz dt-utils-d5025409ebccc4f39ffe9dc939ccd324f81711d5.tar.xz |
libdt: prepare to import state from barebox
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
-rw-r--r-- | src/dt/common.h | 127 | ||||
-rw-r--r-- | src/libdt-utils.sym | 1 |
2 files changed, 121 insertions, 7 deletions
diff --git a/src/dt/common.h b/src/dt/common.h index 94189ad..9b9c5bb 100644 --- a/src/dt/common.h +++ b/src/dt/common.h @@ -1,14 +1,18 @@ #ifndef __DT_COMMON_H #define __DT_COMMON_H +#include <errno.h> #include <fcntl.h> +#include <stdbool.h> #include <stdint.h> #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <sys/ioctl.h> #include <sys/stat.h> +#include <mtd/mtd-abi.h> /** * container_of - cast a member of a structure out to the containing structure @@ -31,19 +35,16 @@ #endif #define pr_err(fmt, arg...) fprintf(stderr, fmt, ##arg) +#define dev_err(dev, fmt, arg...) pr_err(fmt, ##arg) +#define dev_warn(dev, fmt, arg...) pr_err(fmt, ##arg) +#define dev_info(dev, fmt, arg...) pr_err(fmt, ##arg) +#define dev_dbg(dev, fmt, arg...) pr_debug(fmt, ##arg) static inline void *xzalloc(size_t size) { return calloc(1, size); } -typedef _Bool bool; - -enum { - false = 0, - true = 1 -}; - /* * Kernel pointers have redundant information, so we can use a * scheme where we can return either an error code or a dentry @@ -114,6 +115,34 @@ static inline size_t strlcpy(char *dest, const char *src, size_t size) return ret; } +/* Like strncpy but make sure the resulting string is always 0 terminated. */ +static inline char * safe_strncpy(char *dst, const char *src, size_t size) +{ + if (!size) return dst; + dst[--size] = '\0'; + return strncpy(dst, src, size); +} + +static inline char *xstrdup(const char *s) +{ + char *p = strdup(s); + + if (!p) + exit(EXIT_FAILURE); + + return p; +} + +static inline int erase(int fd, size_t count, loff_t offset) +{ + struct erase_info_user erase = { + .start = offset, + .length = count, + }; + + return ioctl(fd, MEMERASE, &erase); +} + /* * read_full - read from filedescriptor * @@ -174,6 +203,88 @@ err_out: return NULL; } + +/* + * write_full - write to filedescriptor + * + * Like write, but guarantees to write the full buffer out, else + * it returns with an error. + */ +static inline int write_full(int fd, void *buf, size_t size) +{ + size_t insize = size; + int now; + + while (size) { + now = write(fd, buf, size); + if (now <= 0) + return now; + size -= now; + buf += now; + } + + return insize; +} + + +#define MAX_DRIVER_NAME 32 +#define DEVICE_ID_SINGLE -1 + +struct device_d { + char name[MAX_DRIVER_NAME]; + int id; + struct device_node *device_node; +}; + +static inline struct param_d *dev_add_param_int(struct device_d *dev, const char *name, + int (*set)(struct param_d *p, void *priv), + int (*get)(struct param_d *p, void *priv), + int *value, const char *format, void *priv) +{ + return NULL; +} + +static inline struct param_d *dev_add_param_enum(struct device_d *dev, const char *name, + int (*set)(struct param_d *p, void *priv), + int (*get)(struct param_d *p, void *priv), + int *value, const char **names, int max, void *priv) + +{ + return NULL; +} + +static inline struct param_d *dev_add_param_bool(struct device_d *dev, const char *name, + int (*set)(struct param_d *p, void *priv), + int (*get)(struct param_d *p, void *priv), + int *value, void *priv) +{ + return NULL; +} + +static inline struct param_d *dev_add_param_mac(struct device_d *dev, const char *name, + int (*set)(struct param_d *p, void *priv), + int (*get)(struct param_d *p, void *priv), + uint8_t *mac, void *priv) +{ + return NULL; +} + +struct driver_d; + +static inline int register_driver(struct driver_d *d) +{ + return 0; +} + +static inline int register_device(struct device_d *d) +{ + return 0; +} +static inline int unregister_device(struct device_d *d) +{ + return 0; +} + #define cpu_to_be32 __cpu_to_be32 #define be32_to_cpu __be32_to_cpu @@ -182,6 +293,8 @@ err_out: #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +#define __maybe_unused __attribute__((unused)) + #endif uint32_t crc32(uint32_t crc, const void *_buf, unsigned int len); diff --git a/src/libdt-utils.sym b/src/libdt-utils.sym index c8ae8f6..106bccd 100644 --- a/src/libdt-utils.sym +++ b/src/libdt-utils.sym @@ -28,6 +28,7 @@ global: of_find_node_by_type; of_find_node_with_property; of_find_property; + of_flatten_dtb; of_get_available_child_count; of_get_child_by_name; of_get_child_count; |