summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-07-04 09:14:07 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-07-11 08:15:47 +0200
commit36d3cc49fb556cfbb15d7cf65569b14796f20246 (patch)
tree3e9ebe656269cc06d569b9232a15c7bd20741d52
parent241c6a017b65a88b1c23c701b32618e3ff5e8e07 (diff)
downloadbarebox-36d3cc49fb556cfbb15d7cf65569b14796f20246.tar.gz
Add hex_byte_pack and hex_byte_pack_upper from kernel
Utility functions needed by the UUID/GUID printf support. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--include/linux/kernel.h23
-rw-r--r--lib/misc.c2
2 files changed, 24 insertions, 1 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 4322f01580..c5ba99fe0a 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -117,5 +117,26 @@
} \
)
-#endif /* _LINUX_KERNEL_H */
+extern const char hex_asc[];
+#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
+#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
+
+static inline char *hex_byte_pack(char *buf, u8 byte)
+{
+ *buf++ = hex_asc_hi(byte);
+ *buf++ = hex_asc_lo(byte);
+ return buf;
+}
+
+extern const char hex_asc_upper[];
+#define hex_asc_upper_lo(x) hex_asc_upper[((x) & 0x0f)]
+#define hex_asc_upper_hi(x) hex_asc_upper[((x) & 0xf0) >> 4]
+static inline char *hex_byte_pack_upper(char *buf, u8 byte)
+{
+ *buf++ = hex_asc_upper_hi(byte);
+ *buf++ = hex_asc_upper_lo(byte);
+ return buf;
+}
+
+#endif /* _LINUX_KERNEL_H */
diff --git a/lib/misc.c b/lib/misc.c
index 0f3eb9aabb..9f2067cf36 100644
--- a/lib/misc.c
+++ b/lib/misc.c
@@ -113,3 +113,5 @@ int parse_area_spec(const char *str, loff_t *start, loff_t *size)
return -1;
}
EXPORT_SYMBOL(parse_area_spec);
+
+const char hex_asc[] = "0123456789abcdef";