blob: 7c102009ba1f8cb90860e3f2e6239039662f20a6 [file] [log] [blame]
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +01001#ifndef _STD_H
2#define _STD_H
3
4#include <stddef.h>
5#include <stdint.h>
6
7void *memset(void *s, int c, size_t n);
8void *memcpy(void *dst, const void *src, size_t n);
9void *memmove(void *dst, const void *src, size_t n);
10int memcmp(const void *a, const void *b, size_t n);
11
12size_t strlen(const char *str);
13int strcmp(const char *a, const char *b);
14
Andrew Scullf12b35d2018-07-16 12:12:59 +010015#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010016
Andrew Scullf12b35d2018-07-16 12:12:59 +010017#define be16toh(v) __builtin_bswap16(v)
18#define be32toh(v) __builtin_bswap32(v)
19#define be64toh(v) __builtin_bswap64(v)
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010020
Andrew Scullf12b35d2018-07-16 12:12:59 +010021#define htobe16(v) __builtin_bswap16(v)
22#define htobe32(v) __builtin_bswap32(v)
23#define htobe64(v) __builtin_bswap64(v)
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010024
Andrew Scullf12b35d2018-07-16 12:12:59 +010025#define le16toh(v) (v)
26#define le32toh(v) (v)
27#define le64toh(v) (v)
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010028
Andrew Scullf12b35d2018-07-16 12:12:59 +010029#define htole16(v) (v)
30#define htole32(v) (v)
31#define htole64(v) (v)
32
33#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
34
35#define be16toh(v) (v)
36#define be32toh(v) (v)
37#define be64toh(v) (v)
38
39#define htobe16(v) (v)
40#define htobe32(v) (v)
41#define htobe64(v) (v)
42
43#define le16toh(v) __builtin_bswap16(v)
44#define le32toh(v) __builtin_bswap32(v)
45#define le64toh(v) __builtin_bswap64(v)
46
47#define htole16(v) __builtin_bswap16(v)
48#define htole32(v) __builtin_bswap32(v)
49#define htole64(v) __builtin_bswap64(v)
50
51#else /* __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ && __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__ */
52
53#error "Unsupported byte order"
54
55#endif
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010056
57#endif /* STD_H */