aboutsummaryrefslogtreecommitdiff
path: root/include/linux/string.h
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-09-25 07:03:06 -0600
committerTom Rini <trini@konsulko.com>2021-10-08 15:53:26 -0400
commit930c887e0fb88dcf1907f268960330c17999b5a3 (patch)
tree9f1bdfd36187f27d0c70b9a981974391b61014bd /include/linux/string.h
parent0caf37e973015255a3c5b9439ddb8c6aef1b5001 (diff)
downloadu-boot-930c887e0fb88dcf1907f268960330c17999b5a3.zip
u-boot-930c887e0fb88dcf1907f268960330c17999b5a3.tar.gz
u-boot-930c887e0fb88dcf1907f268960330c17999b5a3.tar.bz2
lib: Add memdup()
Add a function to duplicate a memory region, a little like strdup(). Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include/linux/string.h')
-rw-r--r--include/linux/string.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/string.h b/include/linux/string.h
index dd255f2..3169c93 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -129,6 +129,19 @@ extern void * memchr(const void *,int,__kernel_size_t);
void *memchr_inv(const void *, int, size_t);
#endif
+/**
+ * memdup() - allocate a buffer and copy in the contents
+ *
+ * Note that this returns a valid pointer even if @len is 0
+ *
+ * @src: data to copy in
+ * @len: number of bytes to copy
+ * @return allocated buffer with the copied contents, or NULL if not enough
+ * memory is available
+ *
+ */
+char *memdup(const void *src, size_t len);
+
unsigned long ustrtoul(const char *cp, char **endp, unsigned int base);
unsigned long long ustrtoull(const char *cp, char **endp, unsigned int base);