summaryrefslogtreecommitdiff
path: root/lib/libc/include/libc.h
diff options
context:
space:
mode:
authorKacper <kacper@mail.openlinux.dev>2025-12-07 20:10:31 +0100
committerKacper <kacper@mail.openlinux.dev>2025-12-07 20:10:31 +0100
commitfc00c656c96528112d05cf0edf8631bd5eaea446 (patch)
treea6e0e6c588191a8bd1c64afc3b7a258e3e66c236 /lib/libc/include/libc.h
Add build system scaffolding and libc headers
Diffstat (limited to 'lib/libc/include/libc.h')
-rw-r--r--lib/libc/include/libc.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/libc/include/libc.h b/lib/libc/include/libc.h
new file mode 100644
index 00000000..3f5f2644
--- /dev/null
+++ b/lib/libc/include/libc.h
@@ -0,0 +1,27 @@
+#ifndef __LIBC_LIBC_H
+#define __LIBC_LIBC_H
+
+#include <__locale.h>
+#include <stdatomic.h>
+
+#define likely(x) __builtin_expect(!!(x), 1)
+#define unlikely(x) __builtin_expect(!!(x), 0)
+#define unused __attribute__((unused))
+#define aligned(type) __attribute__((aligned(__alignof__(type))))
+#define weak __attribute__((__weak__))
+#define weak_reference(old, new) \
+ extern __typeof(old) new __attribute__((__weak__, __alias__(#old)))
+
+static struct {
+ enum {
+ LIBC_ENVP_TOUCHED = 1 << 0,
+ } flags;
+ struct {
+ volatile atomic_flag abort;
+ volatile atomic_flag malloc;
+ volatile atomic_flag environ;
+ } lock;
+ struct __locale_t locale;
+} libc = { .lock = { ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT } };
+
+#endif