EDGESEC  0.1.0-alpha.0+sha.ca29a8277b72f80785649ea9ef9cd7edf642d939
Secure router - reference implementation
allocs.h
Go to the documentation of this file.
1 
10 #ifndef ALLOCS_H
11 #define ALLOCS_H
12 
13 #include <stdarg.h>
14 #include <stdbool.h>
15 #include <stddef.h>
16 #include <stdint.h>
17 #include <stdlib.h>
18 #include <string.h>
19 #include <sys/types.h>
20 #include <unistd.h>
21 
22 #include "./attributes.h"
23 
32 __must_free static inline void *os_zalloc(size_t size) {
33  return calloc(size, 1);
34 }
35 
36 // void *os_malloc(size_t size);
37 // void os_free(void* ptr);
38 
39 #ifndef os_malloc
40 #define os_malloc(s) malloc((s))
41 #endif
42 
43 #ifndef os_realloc
44 #define os_realloc(p, s) realloc((p), (s))
45 #endif
46 
47 #ifndef os_calloc
48 #define os_calloc(nm, s) calloc((nm), (s))
49 #endif
50 
51 #ifndef os_free
52 #define os_free(p) free((p))
53 #endif
54 
55 __must_free static inline void *os_realloc_array(void *ptr, size_t nmemb,
56  size_t size) {
57  if (size && nmemb > (~(size_t)0) / size)
58  return NULL;
59  return os_realloc(ptr, nmemb * size);
60 }
61 
62 #ifndef os_memcpy
63 #define os_memcpy(d, s, n) memcpy((d), (s), (n))
64 #endif
65 #ifndef os_memmove
66 #define os_memmove(d, s, n) memmove((d), (s), (n))
67 #endif
68 #ifndef os_memset
69 #define os_memset(s, c, n) memset(s, c, (n))
70 #endif
71 #ifndef os_memcmp
72 #define os_memcmp(s1, s2, n) memcmp((s1), (s2), (n))
73 #endif
74 
92 __must_free static inline void *os_memdup(const void *src, size_t len) {
93  void *r = os_malloc(len);
94 
95  if (r && src)
96  os_memcpy(r, src, len);
97  return r;
98 }
99 
105 __must_free char *os_strdup(const char *s);
106 #endif
#define os_realloc(p, s)
Definition: allocs.h:44
#define os_memcpy(d, s, n)
Definition: allocs.h:63
__must_free char * os_strdup(const char *s)
Definition: allocs.c:21
#define os_malloc(s)
Definition: allocs.h:40
File containing macros for compiler attributes, if they are supported.
#define __must_free
Definition: attributes.h:94
T calloc(T... args)