Bananymous
6bb2c80bdd
Kernel/LibC: userspace malloc now uses mmap to get memory
...
We could remove syscalls to allocate more memory. This was not
something the kernel should have done.
2023-09-23 02:26:23 +03:00
Bananymous
af4af1cae9
Kernel/LibC: add mmap for private anonymous mappings
...
This will be used by the userspace to get more memory. Currently
kernel handles all allocations, which is not preferable.
2023-09-22 23:01:14 +03:00
Bananymous
63dc2b6aa6
Kernel: Implement SYS_SYNC and add sync executable to userspace
...
You can (and have to) manually sync disk after writes to it.
2023-09-11 01:26:27 +03:00
Bananymous
921d95d18f
All: Clear lines with only whitspace in them
2023-09-10 00:31:42 +03:00
Bananymous
39a5c52088
Kernel: Fix directory permissions
...
We did not care about X bit in directories and instead used only the
R bit for search/read.
2023-09-08 11:46:53 +03:00
Bananymous
9901f95d78
Kernel: Add basic nanosleep, only millisecond percision
2023-09-04 12:59:50 +03:00
Bananymous
6f002c926a
Kernel: add basic fcntl() with couple of commands and no validation
2023-09-04 12:57:09 +03:00
Bananymous
7aaea786c2
LibC: Don't undef needed values in inttypes.h
2023-08-24 15:48:14 +03:00
Bananymous
60a2185ee6
Kernel/LibC: implement proper getpgid and setpgid
2023-08-22 14:53:12 +03:00
Bananymous
c9243f0d1e
Kernel/LibC: Add {get,set}pgrp()
2023-08-22 11:36:33 +03:00
Bananymous
79f3aa5419
Kernel/LibC: add dup() syscall and function
2023-08-17 12:03:29 +03:00
Bananymous
3a36c30e80
LibC: math.h defines is*() macros and uses builtins for values
2023-08-16 10:41:55 +03:00
Bananymous
9cb50cba33
LibC: Fix S_IF* macros and add macros for access/type masks
2023-08-11 10:30:50 +03:00
Bananymous
e715d52f80
LibC: fix typo
2023-08-02 22:10:12 +03:00
Bananymous
b4eddf04c4
LibC: sys/wait.h now has proper exit status macros
...
We use the same format as basically every implementation
2023-08-01 10:32:04 +03:00
Bananymous
f6ee4b3496
Kernel: Implement SYS_GET_PID and SYS_TCSETPGID
...
we don't have consept of process groups yet
2023-07-24 22:29:59 +03:00
Bananymous
2dce0a0415
Kernel: Userspace signal handlers are now called one at a time
...
I added a syscall for telling the kernel when signal execution has
finished. We should send a random hash or id to the signal trampoline
that we would include in the syscall, so validity of signal exit can
be confirmed.
2023-07-23 13:34:53 +03:00
Bananymous
d560137ae6
Kernel/LibC: add SYS_SIGNAL/signal()
2023-07-21 20:08:13 +03:00
Bananymous
c12f4fb40f
Kernel: Make signals more POSIX
2023-07-21 20:01:12 +03:00
Bananymous
10169d773d
Kernel/LibC: Add SYS_KILL/kill()
2023-07-21 19:27:38 +03:00
Bananymous
c2cf98e32f
Kernel/LibC: Add bareboness signals
...
You can now call raise() to raise a signal. Signal handlers are
not yet supported, but the handling works :)
2023-07-21 15:45:02 +03:00
Bananymous
51e4b11890
LibC: add NAME_MAX to limits.h
...
This is defined to 255 which is _XOPEN_NAME_MAX, smallest value
for XOPEN compliance
2023-07-10 11:48:11 +03:00
Bananymous
a337f414fc
LibC: limits.h now defined OPEN_MAX
2023-07-07 23:08:49 +03:00
Bananymous
07fec6e211
Kernel/LibC: add basic dup2
2023-07-06 23:17:54 +03:00
Bananymous
4cd72992c8
Kernel/LibC: Add basic pipe() syscall and command
...
You can now create pipes :)
2023-07-06 22:16:26 +03:00
Bananymous
1fb305fa45
Kernel/LibC: add clock_gettime() for CLOCK_MONOTONIC
...
This gets the number of milliseconds since boot
2023-07-06 00:38:29 +03:00
Bananymous
f09b82c4b5
Kernel/LibC: add SYS_{SET,GET}_PWD and chdir, getpwd
2023-06-12 02:02:52 +03:00
Bananymous
11b68f6a53
Kernel: Add SYS_GET_{,E}{UID,GID}
2023-06-11 22:37:00 +03:00
Bananymous
3fe67e4882
Kernel: Add syscalls for set{,e,re}{uid,gid}
2023-06-11 22:37:00 +03:00
Bananymous
9288537949
LibC: gid_t and id_t are now signed types
...
I have no idea why I had made them unisigned
2023-06-11 22:37:00 +03:00
Bananymous
297141f321
LibC: add strchrnul()
...
this is a gnu libc extension
2023-06-11 20:18:03 +03:00
Bananymous
64890bb640
Kernel: Add SYS_OPENAT
2023-06-11 03:29:22 +03:00
Bananymous
aa86125f2b
Kernel: Implement SYS_FSTAT
2023-06-11 03:29:22 +03:00
Bananymous
c423164066
LibC: Implement basic dirent functionality
...
We don't currently support seeking
2023-06-11 03:29:22 +03:00
Bananymous
eae6119039
Kernel: Add syscall for reading directory entries
2023-06-11 00:18:08 +03:00
Bananymous
30f81e1696
LibC: add missing O_EXEC and O_SEARCH
2023-06-11 00:17:18 +03:00
Bananymous
24993f6020
LibC: implement setenv, unsetenv, putenv
2023-06-05 22:51:02 +03:00
Bananymous
d1ad38c8d4
Kernel/LibC: add SYS_STAT and stat(), lstat()
2023-06-05 14:37:14 +03:00
Bananymous
40055f023c
LibC: add wait and waitpid
...
Note that wait() doesn't work since only waiting for specified
pid is supported. wait() will just return -1 and set errno to
ECHILD.
2023-06-04 18:00:52 +03:00
Bananymous
88e92eec9e
LibC: Add simple definition for realloc
...
The syscall just crashes the kernel currently. I will implement
this when needed
2023-06-02 17:56:13 +03:00
Bananymous
8716c8baf4
LibC: remove select() declaration
...
This already comes from sys/select.h
2023-06-02 17:29:09 +03:00
Bananymous
2d67a7153b
LibC: rename [[noreturn]] to __attribute__((__noreturn__))
...
This compiles with C compiler
2023-06-02 17:28:36 +03:00
Bananymous
3fcc7c6768
LibC: stdlib.h doesn't seem to typedef wchar_t without __need_wchar_t
2023-06-02 17:27:31 +03:00
Bananymous
5d2a062b36
LibC: fix INFINITY definition typo
2023-06-02 17:27:14 +03:00
Bananymous
e517ff6b6d
LibC: fix DIR typedef for C code
2023-06-02 17:26:38 +03:00
Bananymous
7296846a81
LibC: complex.h undefs I before defining it
2023-06-02 17:13:09 +03:00
Bananymous
6abcb0de9b
LibC: mbstate_t is empty struct
2023-06-02 17:10:29 +03:00
Bananymous
40f9d9d9bc
LibC: fix sig_atomic_t definition
2023-06-02 17:08:43 +03:00
Bananymous
24a190d1f7
Kernel: Add SYS_EXEC syscall
2023-05-31 20:57:33 +03:00
Bananymous
e8f820ef8d
LibC: Fix some headers to make gcc build again
2023-05-30 01:17:45 +03:00
Bananymous
998999a755
Kernel: Add SYS_SLEEP
2023-05-28 22:34:48 +03:00
Bananymous
f2d767b799
Kernel: Add bareboness fork() function
2023-05-28 18:08:49 +03:00
Bananymous
faf14b880e
LibC: Rewrite all the headers.
...
We now have more or less posix issue 2018 conforming libc headers.
This was a really time consuming and boring operation but it had to
be done.
Now we get to actually start implementing libc :)
2023-05-26 22:31:21 +03:00
Bananymous
1658e925f2
Kernel: Add bareboness possibility to set termios
2023-05-26 22:31:21 +03:00
Bananymous
729ff267d7
LibC: add function declarations to sys/stat.h
2023-05-11 15:11:33 +03:00
Bananymous
d9be14e1fb
LibC: add function declarations to dirent.h
2023-05-11 01:42:52 +03:00
Bananymous
8a9f9b07e7
LibC: add definitions to math.h
2023-05-11 01:40:42 +03:00
Bananymous
c989a01913
LibC: add defines in stdio.h
2023-05-11 01:39:16 +03:00
Bananymous
5188efcc57
LibC: add function declarations to unistd.h
2023-05-11 00:34:03 +03:00
Bananymous
c05a5b796b
LibC: add function declarations to string.h
2023-05-11 00:34:03 +03:00
Bananymous
f0058e67c2
LibC: add function declarations to math.h
2023-05-11 00:34:03 +03:00
Bananymous
508d6311de
LibC: define all errnos and strerror{name,desk}_np
2023-05-11 00:34:03 +03:00
Bananymous
7c6bf40d0d
LibC: add function declarations to time.h
2023-05-11 00:34:03 +03:00
Bananymous
a74343c589
LibC: add more types to sys/types.h
2023-05-11 00:33:53 +03:00
Bananymous
d188576ef3
LibC: Add dummy signal.h
2023-05-10 23:20:27 +03:00
Bananymous
d922c5e1d0
LibC: add toupper, tolower in ctype.h
2023-05-10 23:13:56 +03:00
Bananymous
0adf24fcad
LibC: Add dummy setjmp.h
2023-05-10 23:00:53 +03:00
Bananymous
80e13965d9
LibC: Add dummy locale.h
2023-05-10 22:58:07 +03:00
Bananymous
5f89f083a2
LibC: add math.h with floorl
2023-05-10 22:35:42 +03:00
Bananymous
480d92fce5
LibC: add better error string support
2023-05-10 02:22:31 +03:00
Bananymous
49fe3d0d4f
LibC: add probably functional *printf
...
I wrote a general printf function that takes an putc function
pointer. We can use this to implement all the printf family
functions. I haven't done thorough testing with this, but it seems
to be functional for the most part
2023-05-10 02:00:28 +03:00
Bananymous
054c5450df
LibC: syscall() now returns -1 on error and updates errno
2023-05-07 01:51:39 +03:00
Bananymous
e1a6e7c3ac
LibC: add proper stdlib.h header
...
Function declarations taken from the posix specifications
2023-04-27 15:14:03 +03:00
Bananymous
3537d53d5c
LibC: add link to posix stdio.h
2023-04-27 14:16:25 +03:00
Bananymous
cd74b2167d
LibC: Write mostly functioning stdio
2023-04-23 14:32:37 +03:00
Bananymous
3f9d6f0311
LibC: add needed stubs to build executables with our compiler
2023-04-12 17:53:02 +03:00
Bananymous
aa2aee684b
Kernel: remove message from BAN::Error
...
We don't store the error message anymore in BAN::Error.
Instead we store a error code that can be mapped into a string.
This allows BAN::Error to only take 4 bytes instead of 128.
We should also make some kernel initialization just panic instead
of returning errors since they are required for succesfull boot
anyway.
2023-04-11 23:25:21 +03:00
Bananymous
a5830c5424
LibC: add stubs for a lot of functions
2023-04-05 23:58:40 +03:00
Bananymous
b6896a6d85
LibC: sys/types uses 'typedef' instead of 'using'
2023-04-05 15:03:24 +03:00
Bananymous
67ff01e915
LibC: Add errno ENOTTY
2023-04-05 02:47:37 +03:00
Bananymous
63e863ad35
LibC: Add unistd.h with STD{IN,OUT,ERR}_FILENO definitions
2023-04-05 00:59:48 +03:00
Bananymous
86d777e2eb
LibC: add device macros in sys/sysmacros.h
2023-04-03 10:59:15 +03:00
Bananymous
cd0d10b64e
LibC: add ENOBUFS errno
2023-03-29 10:58:25 +03:00
Bananymous
32c3aca52f
LibC: add dirent.h
2023-03-25 02:08:33 +02:00
Bananymous
9fd17ef73c
LibC: Add stat structure
2023-03-24 18:08:22 +02:00
Bananymous
1be8b2f514
LibC: add more typedefs to sys/types
2023-03-23 19:24:12 +02:00
Bananymous
d6e4430692
LibC: add errno NAMETOOLONG
2023-03-23 14:48:42 +02:00
Bananymous
cf2be54e8f
LibC: add errno ENOTEMPTY
2023-03-19 05:43:40 +02:00
Bananymous
3ab62e83d3
LibC: add errno EEXISTS
2023-03-19 04:17:39 +02:00
Bananymous
ceb53533be
LibC: add fcntl.h with some defines
2023-03-17 21:18:41 +02:00
Bananymous
e2707b9416
LibC: Add EBADF errno
2023-03-16 16:22:11 +02:00
Bananymous
4493c9bbe6
LibC: Add ENTOSUP errno
2023-03-16 16:03:51 +02:00
Bananymous
1b7625581d
Kernel: Add basic concept of Processes
...
We now create Shell as a process that has its own threads
2023-03-16 12:17:04 +02:00
Bananymous
10ef3c6a54
LibC: add declarations for malloc and free
2023-03-04 02:59:48 +02:00
Bananymous
52aa98ba25
Kernel+LibC: Add some errno codes
...
Kernel now returns ENOMEM and other errnos, so we dont have to write
error messages
2023-03-02 21:10:44 +02:00
Bananymous
5cd97e44e2
LibC: Add strcmp and strncmp
2023-02-23 15:57:33 +02:00
Bananymous
fd16c1cf58
LibC: Add is*() functions to libc
2023-01-16 20:05:51 +02:00
Bananymous
f4b614aa61
LibC: Add some new functions
2022-12-13 00:51:57 +02:00
Bananymous
123382eace
Fixes :)
2022-11-15 21:42:14 +02:00
Bananymous
b185ed4fd3
Libc is now written in C++
2022-11-14 00:31:24 +02:00