fa35e883d7
libc: Stub out strftime
2022-10-23 10:01:03 +02:00
06f9ffc184
libc: Add EXIT_SUCCESS, EXIT_FAILURE, RAND_MAX and BUFSIZ
2022-10-22 21:39:51 +02:00
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
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
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
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
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
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
5816f54293
libc: Move SYS_* constants to sys/syscall.h
2022-10-19 17:49:55 +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
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
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
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
116e7326a4
libc: Implement dirname() and basename()
2022-10-15 16:08:27 +02:00
6953a28ce8
libc: Implement strrchr()
2022-10-15 15:16:19 +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
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
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
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
edda41a7bb
libc: Implement fseek(), ftell() and rewind()
...
All three use the new syscall seek() (with its lseek() wrapper in unistd.h)!!
2022-10-12 15:56:03 +02:00
4a5db1dca7
libc: Add lseek()
2022-10-12 15:37:29 +02:00
928ade123c
libc: Add support for the new seek() system call
2022-10-12 15:32:09 +02:00
e40304f2f1
libc: Add off_t to sys/types.h
2022-10-12 15:30:41 +02:00
e90b90c556
Kernel, libc: Round up to nearest page-aligned size instead of down
2022-10-12 12:15:12 +02:00
d89685bb36
libc: Document sys/types.h
2022-10-12 12:07:42 +02:00
1e16a78106
libc: Document functions in sys/mman.h
2022-10-12 12:06:45 +02:00
0d3e7d4463
libc: Document errno.h
2022-10-12 12:01:07 +02:00
b42c866db8
Correct description for fopen()
2022-10-12 11:58:07 +02:00
9f5b3b76d2
libc: Document the function in fcntl.h
2022-10-12 11:57:49 +02:00
f44411aa46
libc: Document the functions in luna.h
2022-10-12 11:54:29 +02:00
6aabe19fb4
libc: Document the functions in stdio.h
2022-10-12 11:51:32 +02:00
ffc223c2cf
libc: Document functions in stdlib.h
...
Also, add prototypes for calloc() and realloc(), which were already implemented but not in the header.
2022-10-12 11:30:21 +02:00
19ee20b6f5
libc: Document the functions in string.h
2022-10-12 11:19:14 +02:00
38e87d8f8f
libc: Document the functions in unistd.h
2022-10-12 11:02:18 +02:00
44834b8a0f
libc: Implement fputs, fputc, putc and putchar
2022-10-12 10:05:14 +02:00
d3ac590e24
Kernel: Remove the sys_getversion() syscall
...
User programs can now acquire this information by reading /dev/version.
2022-10-11 21:31:28 +02:00
80ab982fe4
libc: make stdout and stderr functional
...
what were before one extern FILE* without reference now are opened by libc on program initialization, to point to /dev/console by default.
2022-10-11 21:08:46 +02:00
53a4b3b85e
libc: Add new flags to open()
...
Since we now have write support, we can add O_WRONLY and O_RDWR to fcntl.h :)
2022-10-11 21:07:21 +02:00