user: implement mlibc as the libc, finally.
It's finally done.. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
|
||||
#ifndef MLIBC_ENSURE_H
|
||||
#define MLIBC_ENSURE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef __MLIBC_ABI_ONLY
|
||||
|
||||
void __ensure_fail(const char *assertion, const char *file, unsigned int line,
|
||||
const char *function);
|
||||
|
||||
void __ensure_warn(const char *assertion, const char *file, unsigned int line,
|
||||
const char *function);
|
||||
|
||||
#endif /* !__MLIBC_ABI_ONLY */
|
||||
|
||||
#define __ensure(assertion) do { if(!(assertion)) \
|
||||
__ensure_fail(#assertion, __FILE__, __LINE__, __func__); } while(0)
|
||||
|
||||
#define MLIBC_UNIMPLEMENTED() __ensure_fail("Functionality is not implemented", \
|
||||
__FILE__, __LINE__, __func__)
|
||||
|
||||
#define MLIBC_MISSING_SYSDEP() __ensure_warn("Library function fails due to missing sysdep", \
|
||||
__FILE__, __LINE__, __func__)
|
||||
|
||||
#define MLIBC_CHECK_OR_ENOSYS(sysdep, ret) ({ \
|
||||
if (!(sysdep)) { \
|
||||
__ensure_warn("Library function fails due to missing sysdep", \
|
||||
__FILE__, __LINE__, __func__); \
|
||||
errno = ENOSYS; \
|
||||
return (ret); \
|
||||
} \
|
||||
sysdep; \
|
||||
})
|
||||
|
||||
#define MLIBC_STUB_BODY ({ MLIBC_UNIMPLEMENTED(); __builtin_unreachable(); })
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* MLIBC_ENSURE_H */
|
||||
|
||||
Reference in New Issue
Block a user