Commit Graph

357 Commits

Author SHA1 Message Date
Bananymous 708a720d9d Kernel: Remove SYS_OPEN
This can be done with SYS_OPENAT with fd set to AT_FDCWD
2024-09-17 16:16:47 +03:00
Bananymous 7177da7d62 LibC: Implement dummy get_rusage
One port seems to use this function. This dummy just reports no used CPU
time for current process nor children
2024-09-17 15:59:22 +03:00
Bananymous d88ee5c9ee Kernel/LibC: Implement `creat` with `open`
This allows getting rid of unnecessary SYS_CREATE. Directory creation
still has its own syscall, but I could combine it with SYS_OPEN also.
2024-09-17 15:55:53 +03:00
Bananymous a084f83f4c Kernel: Rework kernel-side ELF loading
ELFs are now loaded as MemoryRegions so they don't need special handling
anywhere. This also allows file backed COW optimizations to work. This
was not the case before.

This patch removes now obsolete LoadableELF and unused ELF files from
LibElf.
2024-09-15 23:57:34 +03:00
Bananymous 1a24d1839f LibInput: KeyEvent to ansi string now handles delete key
This allows Terminal emulator to also handle delete key.

The value of `\0x7F` may be wrong as qemu's serial console seems to be
sending `\e[3~`
2024-09-15 03:13:21 +03:00
Bananymous c3040a04a3 Terminal: Optimize printing a lot
Terminal used to run `yes` at around 400 lines per second

This patch pumps that to over 100'000 lines per second!

There are 2 optimizations done:
  1. only invalidate window once after rendering is done
  2. if printing more than `rows()` newlines skip prior data
2024-09-15 03:12:26 +03:00
Bananymous d68ad893f0 Kernel/Shell: Add support for delete key 2024-09-14 22:45:48 +03:00
Bananymous 4ca147699d Shell: use printf and putchar instead of fprintf and fputc 2024-09-14 22:37:09 +03:00
Bananymous abed41b8fa Shell: Remove builtin tests
Test should be programs in /bin instead
2024-09-14 22:28:33 +03:00
Bananymous 2604a55f80 Shell: Make ctrl+c start a new command 2024-09-14 22:27:32 +03:00
Bananymous 7f25ddc229 userspace: Add missing alpha channels 2024-09-12 20:53:45 +03:00
Bananymous 97da386ed6 WindowServer: Make focused window bounce by pressing F2
This was an awesome idea by [@Dcraftbg](https://github.com/Dcraftbg)
2024-09-12 20:09:23 +03:00
Bananymous c706829a91 WindowServer: Make corner-radius a variable in config file! 2024-09-12 20:07:30 +03:00
Bananymous 6cd246a38e WindowServer: Add support for rounded corners and transparency 2024-09-12 19:35:44 +03:00
Bananymous 43e88c0ae0 Terminal: Add alpha channel to colors
This doesn't do anything yet, but will when I add transparency support
for WindowServer
2024-09-12 19:34:25 +03:00
Bananymous bf01b935bd WindowServer: Start Terminal with Super+Enter
this allows doing something in GUI after Terminal is closed

also WindowServer is now stopped with Super+Shift+E
2024-09-11 22:18:08 +03:00
Bananymous 98c011e6a6 WindowServer: Open all fds as CLOEXEC
This will allow forking the window server cleanly :D
2024-09-11 22:17:31 +03:00
Bananymous 86dcb5c471 init: Don't leak pwent fd to child processes 2024-09-11 22:11:05 +03:00
Bananymous 467ac6c365 Kernel/LibC: Implement SOCK_CLOEXEC and SOCK_NONBLOCK
This removes the need for fcntl after creating a socket :)
2024-09-11 21:59:11 +03:00
Bananymous 4006a04817 DynamicLoader: Don't do file backed mapping over file bounds 2024-09-11 19:30:35 +03:00
Bananymous 4189a1c729 LibC: Make _init and _fini weak symbols
These seem to be missing sometimes when making shared executables
2024-09-11 14:39:07 +03:00
Bananymous a07cbabcb3 LibC: Define function sizes for setjmp and longjmp
dynamic linking was complaining about these not existing
2024-09-10 16:21:20 +03:00
Bananymous 19d16620a6 DynamicLoader: Don't do file backed mapping for filesz == 0 2024-09-05 14:50:05 +03:00
Bananymous e8bcebfb8e DynamicLoader: Use file backed mmap when possible 2024-09-05 13:59:39 +03:00
Bananymous 6affef76b1 test-shared: Add more shared tests 2024-09-05 12:59:48 +03:00
Bananymous 32ba4d07e2 Userspace: Remove unnecessary mov instruction from crt0 2024-09-05 12:59:05 +03:00
Bananymous ddaaf89c87 BuildSystem: Make default libc a shared library 2024-09-05 12:58:35 +03:00
Bananymous 9aed8dbe6b Toolchain: Build crtbeginS.o crtendS.o and shared libgcc 2024-09-05 12:58:21 +03:00
Bananymous aa7e92b275 Userspace: Write a dynamic loader
This allows running executing dynamically linked executables!
2024-09-05 12:58:21 +03:00
Bananymous f30947336a BuildSystem: Cleanup cmake files 2024-09-05 12:52:25 +03:00
Bananymous 0bb44d7b75 LibC: Fix errno to work with shared libraries 2024-09-04 21:16:04 +03:00
Bananymous 35743cc8e6 LibC: Compile both static and shared version of LibC
libc target is now set as an alias for libc-static
2024-09-02 21:28:02 +03:00
Bananymous 5f92807fdd userspace: Allow building without SSE
I had added changes that had broken compilation without sse support
2024-09-02 21:25:00 +03:00
Bananymous 700c3444f5 LibELF: Add more values and macros for interpreting fields 2024-09-02 20:40:38 +03:00
Bananymous 2ae2ede0b2 LibELF: Add value definitions for DT_ 2024-08-30 15:35:01 +03:00
Bananymous 8da2f12ba6 Kernel: Only load program headers of interpreter if its present
I was loading program headers of both executable and interpreter but
that is incorrect. The interpreter will itself load the program headers
of the executable.
2024-08-28 21:19:37 +03:00
Bananymous 50ab391133 test-globals: print something when calling main
This shows that constructors and destructors are called in correct order
2024-08-28 17:09:07 +03:00
Bananymous 991647bc8f Userspace: Add shared library test
I will use this while testing my dynamic loader
2024-08-28 17:08:37 +03:00
Bananymous 57300687ff LibC: Cleanup and fix missing LibC headers 2024-08-28 17:07:58 +03:00
Bananymous d559339f5f LibC: Compile shared libc as well as static 2024-08-28 17:07:15 +03:00
Bananymous 2bf65ef512 Kernel: Invoke ELF interpreter instead if it is specified 2024-08-28 17:06:32 +03:00
Bananymous 5121d0d934 Kernel: Allow loading PIEs
This is initial work towards implementing dynamic loader and shared
library support.
2024-08-27 17:32:22 +03:00
Bananymous 2c520391eb Kernel/LibC: Add support for init_array and fini_array 2024-08-27 00:47:03 +03:00
Bananymous 991ae4383a Kernel/LibC: Implement fchmod 2024-08-25 15:07:42 +03:00
Bananymous bec3e8654f Shell: Implement escaping quotes in quoted strings 2024-08-24 17:13:50 +03:00
Bananymous 500f774b7f LibC: Add a lot of stub implementations for different libc functions
some ports want to link against these, but they are not ever called
based on simple testing

This patch adds stubs for
- openlog
- syslog
- getrusage
- mlock
- mprotect
- getpeername
- shutdown
- tzset
- mktime
2024-08-22 15:10:41 +03:00
Bananymous ca8832c0e1 LibC: Implement getaddrinfo and freeaddrinfo, add stub for getnameinfo 2024-08-22 15:10:41 +03:00
Bananymous 1cbba113fd LibC: Add and cleanup some networking structures and definitions 2024-08-22 15:10:41 +03:00
Bananymous 45b4b33a3d LibC: Add definitions for some integer sizes to limits.h 2024-08-22 15:10:41 +03:00
Bananymous c453a8e2dc LibC: Implement poll() using select 2024-08-22 15:10:41 +03:00