7600bc5582
libc: Add strings.h
2022-10-22 21:13:22 +02:00
433b307cb2
libc: Add strcoll()
...
No locale support, this just calls strcmp()
2022-10-22 21:00:59 +02:00
4725538aa7
Tests: Add tests for memmove and memcmp + correct our memcmp implementation
2022-10-22 19:04:19 +02:00
8908faf6e2
libc: Add strchrnul()
...
Another GNU extension, it's ok.
2022-10-22 18:37:02 +02:00
503a04f0e9
libc: Add strpbrk()
2022-10-22 17:54:33 +02:00
4d71c0ef04
libc: Implement strndup()
2022-10-22 17:49:44 +02:00
ac8a23d733
wrong type :)
2022-10-22 14:40:30 +02:00
189986d23f
libc: Rename pstname() to pstatname()
...
To avoid confusion with ptsname().
2022-10-22 14:30:41 +02:00
6ac57a2f5c
libc: Add support for pstat()
2022-10-22 14:26:42 +02:00
a4eed362b6
libc: Implement fseeko() and ftello()
2022-10-22 12:41:15 +02:00
759c8a8cab
libc: Make fpos_t no longer a struct
2022-10-22 12:39:37 +02:00
9bbb5d0c07
libc: Implement strspn (with a test)
2022-10-22 12:36:31 +02:00
551d731627
libc: Add FIXME
2022-10-22 12:30:30 +02:00
063e2d5e7a
libc: Add more spacing to stdio.cpp
2022-10-22 12:21:04 +02:00
6dc51abfc8
libc: Add remove() stub
2022-10-22 12:20:05 +02:00
81c337cf9a
libc: Add struct tm and localtime(), gmtime() stubs
2022-10-22 12:17:48 +02:00
91969d4d48
libc: strtoul's endptr must not be const
2022-10-22 12:12:52 +02:00
1f5f6a5e3b
libc: Add strcspn (with a test)
2022-10-22 11:57:25 +02:00
27a18a608c
libc: Implement fgets, fgetc, getc, getchar (with buffered read IO)
2022-10-22 11:38:16 +02:00
51e024588e
libc: Update inttypes.h
...
Turns out it was incorrect.
2022-10-22 11:23:12 +02:00
0faabe02e5
Kernel, libc: Implement O_CLOEXEC
2022-10-22 10:28:02 +02:00
fb88459263
libc: Add all missing errors to strerror()
2022-10-22 10:14:40 +02:00
b2f5a0502f
Kernel, libc: Implement O_NONBLOCK
2022-10-21 21:51:03 +02:00
43073cfdbb
Add new __lc_used macro
2022-10-21 18:39:46 +02:00
fcd6d9b9f5
Add FIXME
2022-10-21 18:37:18 +02:00
bef9158450
Kernel, libc: Add isatty() and F_ISTTY to fcntl()
2022-10-21 18:34:31 +02:00
93207820b3
libc: Add a few errors to errno.h
...
As well as ino_t, which I forgot in the fstat() commit :)
2022-10-21 18:34:01 +02:00
62fa773b27
libc: Add dummy argv
2022-10-21 18:33:06 +02:00
6d7a8a0d0b
libc: Add very basic strtoul()
...
As well as returning NULL in getenv() instead of aborting.
2022-10-21 18:32:46 +02:00
bf026d0dea
libc: Add bad time() function
...
It's just an alias for clock(). Which is not good. But it's a stub, that's the point.
2022-10-21 18:32:01 +02:00
c8a37eaf70
libc: Add SIGINT define
2022-10-21 18:31:19 +02:00
fcf191aa7a
Kernel, libc: Add fstat()
2022-10-21 18:31:09 +02:00
f7cf395f71
Kernel, libc: Add access()
2022-10-20 19:03:24 +02:00
aebd860947
libc: Add stdin
...
Aka keyboard :)
2022-10-19 20:43:04 +02:00
7ec221c36d
libc: Move __luna_syscall* declarations to asm
2022-10-19 17:50:09 +02:00
5816f54293
libc: Move SYS_* constants to sys/syscall.h
2022-10-19 17:49:55 +02:00
b035795eb3
Kernel: Move errno.h and (k)assert.h out of the main include directory
...
This is mostly so IDEs don't pick them up instead of the userspace headers :)
2022-10-19 17:41:23 +02:00
aa90e4a8d9
libc: Implement freopen()
2022-10-19 17:32:59 +02:00
671f2a2de3
Kernel, libc: Implement waitpid()
...
FIXME: exec() is now doing weird page table stuff. But at least it works, no panics :)
2022-10-18 21:30:52 +02:00
f1bfa6bec8
Build system: more cflags + stripping
2022-10-18 18:28:28 +02:00
01564cb905
libc: Adapt libc to getprocid() + add getppid()
2022-10-18 17:36:33 +02:00
3c1146f2c5
libc: Implement setjmp() and longjmp()
2022-10-17 21:22:18 +02:00
511ad67a9a
fdopen: Check for malloc errors
2022-10-17 20:54:32 +02:00
e17a21dbad
libc: Use fdopen() after calling open() in fopen()
2022-10-17 20:54:09 +02:00
8b17065718
Kernel, libc: Rename gettid() to getpid() and move it to unistd.h
2022-10-17 20:08:44 +02:00
87ef210759
Kernel, libc: Remove spawn()
...
Now, fork() and exec() are both implemented. More POSIX-y, thus spawn can be removed.
2022-10-17 19:55:01 +02:00
e7522c21ca
libc: Document fork()
2022-10-17 18:56:04 +02:00
64f5078494
Kernel, libc: Implement fork()
...
This time for real.
Also, add a new per-user-task virtual address allocator (UserHeap), so that mmap'ed pages are in user range and can be copied.
2022-10-17 18:43:35 +02:00
9b39d618de
Kernel, libc: Implement spawn()
...
This function is a Luna alternative to fork() and exec().
Why? Simply because I can't figure out for the life of me how to implement a working fork().
So meanwhile, we have spawn() as a replacement. exec() still exists, though.
2022-10-16 18:48:35 +02:00
6d821d2638
libc: Add support for mkdir()
2022-10-16 17:37:29 +02:00
f35bbe52b7
fnctl: Do not switch on cmd
2022-10-16 17:27:15 +02:00
e1e86ab889
libc: Add support for EEXIST, ENOTDIR, ENOSPC, ENOTSUP and EPIPE to strerror()
2022-10-16 17:24:58 +02:00
d2e2883a79
Kernel: Make mkdir() accessible to userspace
2022-10-16 17:22:12 +02:00
42b6b927c9
libc: Implement strlcpy(), and make strncpy() standard-compliant
2022-10-15 17:24:22 +02:00
48f38bdcef
libc: More inttypes.h
2022-10-15 16:53:26 +02:00
45afd3e243
Replace the rand() which reads from /dev/random with a Mersenne PRNG.
...
Much better now.
Also, it is seeded by reading from /dev/random at startup. Not sure if that's the best idea, but we'll see.
2022-10-15 16:46:54 +02:00
18f1f8b7ca
Add VERY HACKY rand() implementation.
2022-10-15 16:31:08 +02:00
dd358eca29
libc/libgen.cpp: Remove #include <luna.h>
...
This header was included for the NOT_IMPLEMENTED macro.
Now it is implemented.
2022-10-15 16:09:54 +02:00
116e7326a4
libc: Implement dirname() and basename()
2022-10-15 16:08:27 +02:00
5256166e7a
libc: Fix strrchr
2022-10-15 16:06:41 +02:00
6953a28ce8
libc: Implement strrchr()
2022-10-15 15:16:19 +02:00
f13c48b562
libc: make strerror() return "Unknown error" instead of an invalid pointer
2022-10-15 15:14:30 +02:00
7139b4403f
libc: Add EPIPE (not returned by anything yet)
2022-10-15 15:14:02 +02:00
e3e33bacbc
libc: Add stubbed signal.h header
2022-10-15 15:13:38 +02:00
8d552b1522
libc: Add setjmp.h stub functions (not implemented)
2022-10-15 15:13:25 +02:00
46f60b192a
libc: Add libgen.h stub functions (not implemented)
2022-10-15 15:13:10 +02:00
9aa96de61d
libc: Start implementing inttypes.h
2022-10-15 15:12:53 +02:00
6507146c60
libc: Add Luna-specific limits
2022-10-15 14:31:55 +02:00
f50017912d
libc: Implement atoi(), atol() and atoll()
2022-10-15 14:02:24 +02:00
2395c7a871
libc: Implement _Exit
...
Exactly the same as _exit, but in stdlib.h instead of unistd.h
2022-10-15 14:02:10 +02:00
b1739f7f0d
libc: Add support for the new clock() system call
2022-10-15 13:21:22 +02:00
3a9dddaa57
Kernel, libc: Remove the rand() system call
...
That's why we now have a VFS and a /dev pseudo-filesystem. To provide that kind of things.
Remember, everything is a file!!
The new way to ask the kernel for random numbers is to read from /dev/random.
2022-10-15 13:04:48 +02:00
225284a6ca
libc: Add support for mprotect()
2022-10-15 12:59:13 +02:00
613f8170b6
Kernel, libc: Implement mprotect() and use proper PROT_* values
2022-10-15 12:57:14 +02:00
a002e75725
libc: Add strstr()
2022-10-15 12:33:36 +02:00
3fde7e46f5
libc: Add strcmp() and strncmp()
2022-10-15 12:30:49 +02:00
3e2a4276e9
libc: Add memcmp() and memmove()
...
Those were there since forever in the kernel, but they haven't been added to libc until now.
2022-10-15 12:23:37 +02:00
94a6336e4d
libc: add memchr(), strnlen(), strdup(), and rename memclr() to bzero()
2022-10-15 12:18:37 +02:00
523e88e5a9
libc: Add sched_yield()
2022-10-15 11:43:13 +02:00
b0e071e964
libc: Make functions with no arguments be defined as type function(void)
...
Instead of type function().
2022-10-15 11:39:13 +02:00
3e2bebf0aa
libc: Alias __lc_unreachable to __builtin_unreachable
2022-10-15 11:20:20 +02:00
1e86acd4c0
libc: Implement fcntl(F_DUPFD) and dup()
2022-10-15 11:16:34 +02:00
c77e752a82
libc: Implement fileno()
2022-10-15 10:28:52 +02:00
d0d6557e99
libc: Add assert()
2022-10-15 10:05:48 +02:00
8398b2e2e4
libc: Change bits/macros.h to use a __lc_ prefix for internal macros
...
That way, we don't pollute user programs with our own 'noreturn' and 'deprecated' macros
2022-10-15 09:52:37 +02:00
1043b0772d
Make libc exit with a specific code if program initialization fails
...
Now you know, if a program exits with code -127 it's libc's fault :)
2022-10-14 21:26:46 +02:00
d5bc87099f
libc: #define STDOUT_FILENO and STDERR_FILENO
...
Still missing stdin >.<
2022-10-14 21:24:18 +02:00
eb67ab113e
libc: Add ctype.h
2022-10-14 21:12:26 +02:00
ccf8f404a8
libc: Make the stdio initialization code cleaner
2022-10-14 19:36:20 +02:00
4e08c9d8ce
libc: Pass the last argument in __luna_syscall5 correctly
2022-10-14 19:24:58 +02:00
0e64c57e10
libc: Change __{stderr, stdout} to {stderr, stdout}
2022-10-14 19:23:14 +02:00
3b83d7ccaf
libc: Implement fsetpos() and fgetpos()
...
Not much to do, since these are kind of equivalent to fseek() and ftell().
2022-10-14 19:12:40 +02:00
743aedcd49
libc: Implement atexit() and _exit()
...
exit() now calls registered handlers before calling _exit().
And initialize_libc() can now register a handler to close stdout and stderr on program termination!! :)
2022-10-12 20:41:55 +02:00
be9026442e
libc: Check for file descriptors 0 and 1, and if they exist do not close and reopen them
2022-10-12 20:19:45 +02:00
de6041fede
libc: Add fdopen()
2022-10-12 20:19:13 +02:00
5f8376409d
Kernel, libc: Implement EFAULT
2022-10-12 19:25:35 +02:00
4091799701
Kernel, libc: Add ENOEXEC (Exec format error)
2022-10-12 19:15:44 +02:00
531afc3d6f
libc: Add support for the new exec() system call
...
execv() is a temporary wrapper that ignores the second parameter, while execve() and execvp() still error out.
2022-10-12 17:45:58 +02:00
34c35163e4
libc: use the normal names that everybody uses for stdout and stderr
2022-10-12 17:15:57 +02:00
dfdc3b2d11
libc: close fds 0 and 1 before opening stdout and stderr
2022-10-12 17:14:49 +02:00