Commit Graph

2725 Commits

Author SHA1 Message Date
Bananymous d1bb72f6fb Kernel: Don't allow CPU load printing underflow 2025-05-13 10:19:13 +03:00
Bananymous 1bcd1edbf5 Kernel/LibC: Implement basic epoll
This implementation is on top of inodes instead of fds as linux does it.
If I start finding ports/software that relies on epoll allowing
duplicate inodes, I will do what linux does.

I'm probably missing multiple epoll_notify's which may cause hangs but
the system seems to work fine :dd:
2025-05-13 10:18:05 +03:00
Bananymous 143a00626b Kernel: Fix fork cmdline copying and copy environ 2025-05-13 10:16:21 +03:00
Bananymous 0eb981f51c Kernel: Fix Random.h includes 2025-05-13 10:16:21 +03:00
Bananymous 6cc01349f7 Kernel: Fix unblocking recv through read 2025-05-13 10:16:21 +03:00
Bananymous a7bd4acd46 Kernel: Remove static variables from virtual tty 2025-05-13 10:16:21 +03:00
Bananymous 8e0a56b49a Kernel: Implement loopback network interface 2025-05-13 10:16:21 +03:00
Bananymous a8844ddd28 WindowServer: Send mouse release to same window as mouse press 2025-05-13 10:16:21 +03:00
Bananymous c18fefd5f3 BuildSystem: Cleanup cmake library linking 2025-05-07 18:42:37 +03:00
Bananymous 3040940e35 ports/tcc: Fix 32 bit build and add version name
tcc was using "Linux" for machine name in version string if it was not
explicitly specified.
2025-05-07 18:33:39 +03:00
Bananymous df3d2d57c3 ports/quake2: Update to new LibGUI interface 2025-05-07 17:23:15 +03:00
Bananymous 92d26f2216 ports/doom: Update to new LibGUI interface 2025-05-07 17:21:29 +03:00
Bananymous 0380c68f89 ports/tinygb: Update to new LibGUI interface 2025-05-07 17:21:29 +03:00
Bananymous 2a6dc6a7b7 LibGUI: Add missing Texture files 2025-05-07 17:21:29 +03:00
Bananymous 40617f0d5c WindowServer: Make mod+d open program launcher 2025-05-06 00:42:15 +03:00
Bananymous 09745a7835 userspace: Implement program launcher
This is kinda useless as I only have Terminal and test-window
implemented. Also the code is really messy as I don't have GUI widgets.
2025-05-06 00:41:22 +03:00
Bananymous 57f6f50939 Terminal: Implement dumb font bolding
This is just drawing character twice at one pixel offset
2025-05-05 23:09:53 +03:00
Bananymous f959905adf LibGUI: Rework window rendering
Abstract drawing surface to Texture. All windows now contain a texture
matching its size.
2025-05-05 23:08:01 +03:00
Bananymous f78c7e7926 LibGUI: Add API to block until window events are available 2025-05-05 22:33:00 +03:00
Bananymous 96496da0ab Kernel: Allow USB mouse to send extra2 button events 2025-05-05 22:32:26 +03:00
Bananymous 2dc4733ac1 test: improve pthread test 2025-05-05 19:21:47 +03:00
Bananymous f14774d034 libc: fix tmpnam when no name is found 2025-05-05 19:17:16 +03:00
Bananymous c08c63f420 libc: reorder destructor and fflush in exit 2025-05-05 19:16:52 +03:00
Bananymous eb79c6c47c mkdir: Add -p option 2025-05-05 19:16:29 +03:00
Bananymous bf1cbb4cde Terminal: Update terminal size and send SIGWINCH on resize 2025-05-05 19:09:21 +03:00
Bananymous 592675022e Kernel: Allow tcgetpgrp on pseudo terminal masters 2025-05-05 19:09:01 +03:00
Bananymous b2e10d7e6e Kernel: Remove unnecessary locks 2025-05-05 19:08:57 +03:00
Bananymous 0689954433 Terminal: Set minimum size to 8x2 cells 2025-05-05 18:20:22 +03:00
Bananymous 5c37f198cb WindowServer/LibGUI: Allow windows to set minimum size 2025-05-05 18:19:59 +03:00
Bananymous 3b02a9d4fe WindowServer: Resize from closest corner 2025-05-05 18:19:19 +03:00
Bananymous c9057aa498 WindowServer: Cleanup code and resize on fullscreen 2025-05-05 16:42:15 +03:00
Bananymous 2b0d198b05 Terminal: Allow resizing of the terminal 2025-05-05 03:15:30 +03:00
Bananymous 7798145c74 WindowServer: Implement window resizing
windows can now set resizable attribute which allows window server to
resize them
2025-05-05 03:14:50 +03:00
Bananymous fcfadd7c74 LibGUI: Add background color for windows
This is used when resizing a window to fill the empty space
2025-05-05 03:12:31 +03:00
Bananymous c0181820a9 ports/tinygb: Set title like sdl frontend does 2025-05-05 01:10:41 +03:00
Bananymous 76d4e6bd18 LibGUI: Add support for changing window title 2025-05-05 01:10:05 +03:00
Bananymous ccb81de85d snake: Use box drawing characters
This makes it look much better.

Also fix bug with apples generating on top of snake's tail
2025-05-05 00:30:58 +03:00
Bananymous 82f4975f45 LibC: Save callee saved registers on setjmp 2025-05-04 13:54:35 +03:00
Bananymous d457e6ad6a LibC: Fix printf e/E modifier for negative exponents 2025-05-04 13:42:17 +03:00
Bananymous abf7c8e68a LibC: Implement `difftime` 2025-05-04 13:42:17 +03:00
Bananymous 1a38d0c31e LibC: Add g/G modifiers to printf 2025-05-04 13:42:17 +03:00
Bananymous 9ff9d679e9 Kernel: Fix text mode cursor
Apparently text mode renders cursor in the *foreground* color. My
current clear function used the same color for foreground and background
making the cursor effectively invisible.

Also cursor hiding is now done by moving the cursor off bounds (0, height)
some website I read said this to be valid even on VGA compatible cards
without disable bit.

http://www.osdever.net/FreeVGA/vga/textcur.htm
2025-04-25 02:31:33 +03:00
Bananymous 9f3f8f950a Kernel: Add better panic message for failed shutdown
ACPI shutdown does not work on the web emulator and running `poweroff`
crashes on `ASSERT_NOT_REACHED()`.
2025-04-25 01:52:33 +03:00
Bananymous 006a196e4a LibC: optimize strpbrk, str{,c}spn, strtok{,_r}
These matches are now detected with bitmasks instead of looping over the
second string
2025-04-24 01:39:49 +03:00
Bananymous 418678466c Kernel: Fix text mode palette
ANSI and text mode color indices are not in the same order
2025-04-23 23:07:47 +03:00
Bananymous 9f4cb5c4dd Kernel: Make pseudo terminals not overwrite old data
If pseudo terminal buffer was filled, old implementation would overwrite
old data. This is bad if producer is capable of producing more data than
consumer can handle.
2025-04-23 22:03:53 +03:00
Bananymous 73f9de6635 Terminal: Add support for ANSI SGR 8bit and 24bit 2025-04-23 22:03:53 +03:00
Bananymous 12b9c82086 Terminal: Don't wrap cursor right after x == cols
This prevents scrolling when bottom right scroll is written to
2025-04-23 22:03:53 +03:00
Bananymous a8edb8870e Kernel: Add support for 8bit and 24bit ANSI SGR 2025-04-23 22:03:53 +03:00
Bananymous dabc3c6cc4 Kernel: Don't wrap cursor immediatly at cols()
This prevents unwanted scrolling when writing to bottom right cell
2025-04-23 22:03:53 +03:00