Merge tag 'nfsd-6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
[linux-2.6-block.git] / include / linux / hex.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_HEX_H
3 #define _LINUX_HEX_H
4
5 #include <linux/types.h>
6
7 extern const char hex_asc[];
8 #define hex_asc_lo(x)   hex_asc[((x) & 0x0f)]
9 #define hex_asc_hi(x)   hex_asc[((x) & 0xf0) >> 4]
10
11 static inline char *hex_byte_pack(char *buf, u8 byte)
12 {
13         *buf++ = hex_asc_hi(byte);
14         *buf++ = hex_asc_lo(byte);
15         return buf;
16 }
17
18 extern const char hex_asc_upper[];
19 #define hex_asc_upper_lo(x)     hex_asc_upper[((x) & 0x0f)]
20 #define hex_asc_upper_hi(x)     hex_asc_upper[((x) & 0xf0) >> 4]
21
22 static inline char *hex_byte_pack_upper(char *buf, u8 byte)
23 {
24         *buf++ = hex_asc_upper_hi(byte);
25         *buf++ = hex_asc_upper_lo(byte);
26         return buf;
27 }
28
29 extern int hex_to_bin(unsigned char ch);
30 extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
31 extern char *bin2hex(char *dst, const void *src, size_t count);
32
33 bool mac_pton(const char *s, u8 *mac);
34
35 #endif