Bananymous
094978b8d1
LibC: make sleep() set errno if sleep woke up early
2023-12-06 13:13:43 +02:00
Bananymous
b334904427
Kernel: Rework all signal code
...
Signal handling code was way too complex. Now everything is
simplified and there is no need for ThreadBlockers.
Only complication that this patch includes is that blocking syscalls
have to manually be made interruptable by signal. There might be some
clever solution to combat this is make this happen automatically.
2023-12-06 13:02:17 +02:00
Bananymous
afa1f07fd2
Kernel: Remove unnecessary raise syscall
2023-12-06 13:00:45 +02:00
Bananymous
e63820ba7b
LibC: cleanup and fix fgets
...
My quick fix for fgets wrote non-nullterminated newline if size was
one.
POSIX doesn't specify what happens if size == 0, so I do the same as
glibc and return NULL without setting errno.
2023-12-05 10:00:43 +02:00
Bananymous
ab44c60d7e
LibC: fix fgets when reading empty line
2023-12-05 07:46:14 +02:00
Bananymous
c10dffd719
Kernel: Make internal framebuffer bpp constexpr defined in libc
2023-11-29 20:07:33 +02:00
Bananymous
74b3fc2e7c
Kernel: Reading from negative offset in fb dev gives out info
2023-11-28 23:50:11 +02:00
Bananymous
4a0bfd08e0
Kernel/LibC: Implement pread()
2023-11-28 23:47:30 +02:00
Bananymous
46ad4f2818
Kernel/LibC: Implement very basic msync
2023-11-22 22:44:06 +02:00
Bananymous
447da99f0b
Kernel/LibC: Implement readlink and readlinkat
2023-11-11 23:16:52 +02:00
Bananymous
6d899aa6ce
BuildSystem: using sysroot doesn't need root privileges anymore!
...
Sysroot is now created with fakeroot. This allows root access to be
only needed for disk image creation, since it uses loopback devices.
2023-11-04 17:50:43 +02:00
Bananymous
bc1d1bf919
LibC: implement and call __cxa_finalize() on exit()
...
This allows global destructors to be actually called
2023-10-30 11:10:08 +02:00
Bananymous
f05b9a6877
Kernel/LibC: Add crt* files to LibC and remove crt0 from kernel
...
There was no reason for libc get crt0 from kernel.
2023-10-30 11:06:13 +02:00
Bananymous
74bfb930f2
Kernel/LibC: Add syscall and wrapper for unlink
2023-10-25 21:45:04 +03:00
Bananymous
8bb47aee02
Kernel/LibC/Userspace: Implement mkdir and creat
...
Touch now uses creat insteadd of open with O_CREAT flag
2023-10-25 21:07:26 +03:00
Bananymous
15bb1804ef
Kernel/LibC: implement chmod syscall + libc wrapper
2023-10-25 02:35:37 +03:00
Bananymous
797ca65c66
Kernel: Add physical memory info to /proc/{pid}/meminfo
2023-09-30 22:11:45 +03:00
Bananymous
a511441f7e
Kernel: /proc/{pid}/meminfo now reports per process memory usage
2023-09-30 21:20:18 +03:00
Bananymous
38320018dc
LibC: Implement stpcpy since gcc seems to need it
...
gcc seems to optimize some calls to strcpy to stpcpy
2023-09-30 20:58:19 +03:00
Bananymous
d883d212b1
Kernel/LibC: dirent now contains file type
2023-09-30 20:46:57 +03:00
Bananymous
d54c6b7f6b
LibC: Fix mmap()
...
mmap() did not pass fildes to the syscall structure.
2023-09-29 17:24:21 +03:00
Bananymous
376b9f7272
LibC: mmap returns MAP_FAILED instead of NULL
2023-09-29 10:38:08 +03:00
Bananymous
49d941ad65
LibC: Fix a bug in malloc
...
You could not allocate with size equal to one of the pool sizes.
2023-09-28 21:05:27 +03:00
Bananymous
79851394b3
Kernel/LibC/Userspace: Add SYS_POWEROFF + cli tool
...
You can now shutdown/reboot banan-os with the poweroff cli tool.
Reboot doesn't seem to work on qemu.
2023-09-28 12:36:47 +03:00
Bananymous
0b11d76576
LibC: Add errno for unknown error
2023-09-28 12:06:17 +03:00
Bananymous
1cd12b5f16
LibC: Implement length modifiers to printf
2023-09-28 11:42:57 +03:00
Bananymous
8d5369fafe
Kernel: Add some functionality to disable TTY input/output
...
Userspace programs can call tty_ctrl() to disable/enable tty from
handling input and displaying output.
This API is probably going to change in the future to ioctl calls
but I'm not sure how ioctl is used and what functionality should it
have. I decided to create whole new function and syscall for now.
Next I will expose framebuffer in /dev/fb0 and then I can start work
on graphical environment! :D
2023-09-27 15:44:05 +03:00
Bananymous
6cb8bda6e1
LibC: add syncsync() to unistd.h
...
This is my own WELL NAMED (:D) function that takes a paramemeter
to make the sync operation synchronous.
2023-09-27 00:35:36 +03:00
Bananymous
fc953df281
Kernel/LibC: remove PATH resoltion from kernel
...
I have no idea why I had made PATH environment variable parsing
to be part of the kernel. Now the shell does the parsing and
environment syscall is no longer needed.
2023-09-23 03:08:14 +03:00
Bananymous
fe2dca16f0
Kernel/LibC: add flag to enable/disable sse support
...
SSE support is very experimental and causes GP. I decided to make
SSE not default until I get to fixing it :)
2023-09-23 02:28:25 +03:00
Bananymous
f662aa6da2
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
fee3677fb9
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
5fae3cec2a
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
720bc418a6
All: Clear lines with only whitspace in them
2023-09-10 00:31:42 +03:00
Bananymous
9e4a87021c
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
0ec4f970f7
LibC: fix fread implementation
...
fread() should read until either size*nitems bytes are read or eof
is reached.
2023-09-07 16:00:47 +03:00
Bananymous
a15ffcb071
LibC: add time() implementation
2023-09-04 13:52:58 +03:00
Bananymous
692b77fb8e
LibC: Add rand() and srand() implementation
...
This code is from the wikipedia page for Permuted congruential generator
2023-09-04 13:52:13 +03:00
Bananymous
044378cfa3
Kernel: Add basic nanosleep, only millisecond percision
2023-09-04 12:59:50 +03:00
Bananymous
19d0fb6fcd
Kernel: add basic fcntl() with couple of commands and no validation
2023-09-04 12:57:09 +03:00
Bananymous
e8a73f9696
BuildSystem: use -a with rsync
...
This allows cmake to not rebuild whole project every time
2023-08-28 11:38:17 +03:00
Bananymous
1a0d114861
LibC: Don't undef needed values in inttypes.h
2023-08-24 15:48:14 +03:00
Bananymous
b05cf9ef09
BuildSystem: Base sysroot is now distributed as a tar ball
...
This allows file and directory permissions work as intended.
cmake is now filled with 'sudo' but with sudo timeout this should be
fine.
2023-08-23 10:38:21 +03:00
Bananymous
97ea4986af
Kernel/LibC: implement proper getpgid and setpgid
2023-08-22 14:53:12 +03:00
Bananymous
42b90ae76c
Kernel/LibC: Add {get,set}pgrp()
2023-08-22 11:36:33 +03:00
Bananymous
b10168eb1c
LibC: make printf buffer only 128 bytes
...
Only reason for it to be big is if you want super large zero padding
for your number. This will eventually be handled without the buffer.
2023-08-18 16:49:27 +03:00
Bananymous
dc7391dc89
BuildSystem: only apply stack usage warning to libc
2023-08-17 20:49:52 +03:00
Bananymous
dcd8374b89
LibC: add fileno() and fdopen()
...
fdopen() doesn't currently care about mode and will have same mode
as the underlying file descriptor.
2023-08-17 12:03:59 +03:00
Bananymous
8e4216215e
Kernel/LibC: add dup() syscall and function
2023-08-17 12:03:29 +03:00
Bananymous
9a63d3b2da
LibC: printf handles nan and inf
2023-08-16 10:49:34 +03:00