user: implement mlibc as the libc, finally.

It's finally done..

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
kaguya
2026-05-02 03:31:49 -04:00
parent 2fa39ad85a
commit 9a9b91c940
2387 changed files with 152741 additions and 315 deletions
+64
View File
@@ -0,0 +1,64 @@
#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <stdint.h>
#include <sys/time.h>
#include <sys/timerfd.h>
#include <unistd.h>
int main() {
int t = timerfd_create(CLOCK_MONOTONIC, 0);
assert(t > 0);
struct itimerspec its;
int ret = timerfd_gettime(t, &its);
assert(ret == 0);
assert(!its.it_value.tv_sec);
assert(!its.it_value.tv_nsec);
assert(!its.it_interval.tv_sec);
assert(!its.it_interval.tv_nsec);
struct itimerspec new_its = {
.it_interval = {0, 0},
.it_value = {0, 100000000},
};
ret = timerfd_settime(t, 0, &new_its, &its);
assert(ret == 0);
assert(!its.it_value.tv_sec);
assert(!its.it_value.tv_nsec);
assert(!its.it_interval.tv_sec);
assert(!its.it_interval.tv_nsec);
ret = timerfd_gettime(t, &its);
assert(ret == 0);
assert(!its.it_value.tv_sec);
assert(its.it_value.tv_nsec);
assert(!its.it_interval.tv_sec);
assert(!its.it_interval.tv_nsec);
struct timeval before;
gettimeofday(&before, NULL);
assert(ret == 0);
uint64_t ev = 0;
ret = read(t, &ev, sizeof(ev));
struct timeval after;
gettimeofday(&after, NULL);
assert(ret == sizeof(ev));
assert(ev == 1);
struct timeval diff = {};
timersub(&after, &before, &diff);
assert(diff.tv_sec || diff.tv_usec);
fcntl(t, F_SETFL, fcntl(t, F_GETFL, 0) | O_NONBLOCK);
ret = timerfd_settime(t, 0, &new_its, &its);
assert(ret == 0);
ret = read(t, &ev, sizeof(ev));
assert(ret == -1);
assert(errno == EAGAIN);
return 0;
}