1
2
3
4
5
6
7
8
9
10
11
12#ifndef S390_CCW_LIBC_H
13#define S390_CCW_LIBC_H
14
15typedef unsigned long size_t;
16typedef int bool;
17typedef unsigned char uint8_t;
18typedef unsigned short uint16_t;
19typedef unsigned int uint32_t;
20typedef unsigned long long uint64_t;
21
22static inline void *memset(void *s, int c, size_t n)
23{
24 size_t i;
25 unsigned char *p = s;
26
27 for (i = 0; i < n; i++) {
28 p[i] = c;
29 }
30
31 return s;
32}
33
34static inline void *memcpy(void *s1, const void *s2, size_t n)
35{
36 uint8_t *dest = s1;
37 const uint8_t *src = s2;
38 size_t i;
39
40 for (i = 0; i < n; i++) {
41 dest[i] = src[i];
42 }
43
44 return s1;
45}
46
47static inline int memcmp(const void *s1, const void *s2, size_t n)
48{
49 size_t i;
50 const uint8_t *p1 = s1, *p2 = s2;
51
52 for (i = 0; i < n; i++) {
53 if (p1[i] != p2[i]) {
54 return p1[i] > p2[i] ? 1 : -1;
55 }
56 }
57
58 return 0;
59}
60
61static inline size_t strlen(const char *str)
62{
63 size_t i;
64 for (i = 0; *str; i++) {
65 str++;
66 }
67 return i;
68}
69
70static inline char *strcat(char *dest, const char *src)
71{
72 int i;
73 char *dest_end = dest + strlen(dest);
74
75 for (i = 0; i <= strlen(src); i++) {
76 dest_end[i] = src[i];
77 }
78 return dest;
79}
80
81static inline int isdigit(int c)
82{
83 return (c >= '0') && (c <= '9');
84}
85
86uint64_t atoui(const char *str);
87char *uitoa(uint64_t num, char *str, size_t len);
88
89#endif
90