Bananymous
7a645b8555
Kernel: Add SMP message StackTrace
...
This event is sent when user presses ctrl+{F1-F12} and it will dump the
corresponding processor's stack trace. This is really helpful for
detecting deadlocks in the system
2025-06-02 11:39:18 +03:00
Bananymous
c5b0d0235f
Kenrel: Allow Processor::send_smp_message to send event to current CPU
2025-06-02 11:39:18 +03:00
Bananymous
b7948551ff
userspace: Add empty libm and libpthread
...
These making porting stuff easier. I could not find a way to tell CMake
that the system does not have threads library
2025-06-02 11:39:18 +03:00
Bananymous
e109b5cff6
Kernel: Remove unnecessary locks from Pipe
...
Inode already locks its own mutex when read/write is called there is no
need to explicitly lock them in read_impl/write_impl
2025-06-02 11:39:18 +03:00
Bananymous
9883fb7bf6
Kernel: Rewrite epoll notifying system
...
This removes the need to lock epoll's mutex when notifying epoll. This
prevents a ton of deadlocks when epoll is notified from an interrupt
handler or otherwise with interrupts disabled
2025-06-02 11:39:18 +03:00
Bananymous
e9f8471a28
BAN: Return UTF::invalid from byte_length instead of 0
2025-06-02 11:39:18 +03:00
Bananymous
4656b11256
LibC: actually use ATEXIT_MAX for atexit limit
2025-06-02 10:43:49 +03:00
Bananymous
f2ccab2df7
ports/openssl: Fix openssl
...
New unistd.h definitions (or something) makes openssl think recvmsg is
available, disable it manually.
2025-06-01 19:51:33 +03:00
Bananymous
b2e3aefa72
Kernel: Don't crash when terminating process with signal
2025-06-01 16:59:02 +03:00
Bananymous
2b48933f29
LibC: Implement all functions from complex.h
2025-06-01 13:48:03 +03:00
Bananymous
4ac6cbe70e
LibC: Add some missing wchar.h functions
...
isw* functions are just wrappers to is*
tow* functions are just wrappers to to*
2025-06-01 13:48:03 +03:00
Bananymous
cc07c3df94
LibC: Add basic strxfrm{,_l}
2025-06-01 13:48:03 +03:00
Bananymous
31bcad2535
LibC: Implement truncate
2025-06-01 13:48:03 +03:00
Bananymous
b75970958e
Kernel/LibC: Implement unlinkat
2025-06-01 13:48:03 +03:00
Bananymous
91756c057e
LibC: Add all of the missing POSIX definitions in unistd.h and limits.h
2025-06-01 13:48:03 +03:00
Bananymous
df7f245cf8
LibC: Implement pthread_atfork
...
Again this code is not tested but *feels* right :D
2025-06-01 13:48:03 +03:00
Bananymous
dbdefa0f4a
LibC: Implement pthread cancelation
...
This code is not tested at all but it looks correct xD
2025-06-01 13:48:03 +03:00
Bananymous
56fdf6002c
Kernel/LibC: Implement pthread_kill
2025-06-01 13:48:03 +03:00
Bananymous
c957f1ddca
LibC: Cleanup pthread code and add some pthread_attr functions
...
errno, pthread cleanup and pthread id are now stored in uthread. This
allows using these without TLS
2025-06-01 13:48:03 +03:00
Bananymous
423386a052
LibC: Add memory.h that just includes string.h
...
There are a lot of ports trying to include memory.h. This is not posix
but glibc just includes string.h. I think this is just to privide mem*
functionss...?
2025-06-01 13:48:03 +03:00
Bananymous
1c882ea361
DynamicLoader: Don't print TODOs on PT_GNU_ headers
...
These should be either handled by kernel or just used as optimizations.
There is no requirement to handle them in dynamic loader
2025-06-01 13:48:03 +03:00
Bananymous
b1065fa01d
Kernel/LibC: Add ppoll syscall and fix poll
...
poll is now using its own syscall instead of wrapping aroung pselect.
This adds less overhead on top of poll and adds support for POLLHUP
2025-06-01 13:48:03 +03:00
Bananymous
8ff9c030bf
Kernel: Add better termios support
...
I'm not sure if this is correct but at least it's better than before :)
2025-06-01 13:48:03 +03:00
Bananymous
9b875fb930
Kernel: Make epoll work with different fds pointing to same inode
2025-06-01 13:48:03 +03:00
Bananymous
857bac4b78
Kernel: Disable unused interrupt methods in PCI devices
2025-06-01 13:48:03 +03:00
Bananymous
30074c290d
Kernel: Add more descriptive names to sockets types
2025-06-01 13:48:03 +03:00
Bananymous
60d1c26114
Kernel: Fix race condition in FileBackedRegion creation
2025-06-01 13:48:03 +03:00
Bananymous
692ba43182
Kernel: Fix spinlock bugs found by the new spinlock security
2025-06-01 13:48:03 +03:00
Bananymous
6542a037df
Kernel: Make spinlocks more safe
...
Kernel now makes sure thread is not holding any spinlocks when it tries
to lock a mutex or yield. Spinlocks are supposed to be only used for
short times without the possibility of yielding
2025-06-01 13:48:03 +03:00
Bananymous
9f4b451501
Kernel: Fix epoll deadlock
...
If epoll_wait and epoll_notify were called at the same time, there was a
possible deadlock when epoll was confirming the event from the inode
2025-06-01 13:48:03 +03:00
Bananymous
1bd454b8fd
Kernel/LibC: Implement utime* family functions
...
This patch adds *working*
- utime
- utimes
- utimensat
- futimens
2025-06-01 13:48:03 +03:00
Bananymous
8392472bac
ports: Add git port
...
This commit is pushed from banan-os :D
2025-05-29 00:31:40 +00:00
Bananymous
cd5b351ce4
Kernel: Fix fchmodat mode handling
...
Ignore file type bits instead of returning EINVAL if they are set
2025-05-29 03:24:31 +03:00
Bananymous
50024fbf8b
ports/vim: Set EDITOR=vim in .shellrc
2025-05-29 01:20:30 +03:00
Bananymous
4d4fb3b6ec
Kernel: Cleanup and fix pipe
...
pipe now sends SIGPIPE and returns EPIPE when writing and no readers are
open
2025-05-29 01:02:22 +03:00
Bananymous
37dea8aee7
userspace: Implement basic less program
...
This is very simple and only supports couple of flags and scrolling
2025-05-29 01:00:28 +03:00
Bananymous
69c4940b27
LibC: Fix signal return value
...
signal was returning `func` when it should've returned the old handler
2025-05-29 00:58:30 +03:00
Bananymous
7691b019e2
LibC: Fix printf %c modifier for null byte
2025-05-28 03:10:01 +03:00
Bananymous
f55d6b11c5
LibC: Implement mblen
2025-05-28 03:10:01 +03:00
Bananymous
f52877abb4
LibC: Implement readv and writev
2025-05-28 03:10:01 +03:00
Bananymous
ee7c9b6731
LibC: Add simple getnameinfo
...
This doesn't actually do any name resolution but just formats input to
string.
2025-05-28 03:10:01 +03:00
Bananymous
4721344518
LibC: Don't fail getaddrinfo if node is null
2025-05-28 03:10:01 +03:00
Bananymous
e0d986dcd7
LibC: Add missing u_char and u_short types
2025-05-28 03:10:01 +03:00
Bananymous
c7be3dcd5b
LibC: Add timer{add,sub,clear,isset,cmp}
...
These are not POSIX but used by used by some ports
2025-05-28 03:10:01 +03:00
Bananymous
89c9bfd052
Kernel/LibC: Implement socketpair for UNIX sockets
2025-05-28 03:10:01 +03:00
Bananymous
12b93567f7
Kernel/LibC: Implement getpeername
2025-05-28 03:10:01 +03:00
Bananymous
2f37776614
Kernel: Notify epoll on new TCP connections
2025-05-28 03:10:01 +03:00
Bananymous
f778bca3f2
Kernel: Remove accidentally commited debug code :)
2025-05-28 03:10:01 +03:00
Bananymous
a945d19750
Kernel: Partially fix PCI PIN interrupt routing
...
Don't fail early if the first device is not the one we are looking for
2025-05-28 03:10:01 +03:00
Bananymous
7f04b2c96c
Kernel: Fix E1000 interrupt handling
...
E1000 does not support MSI-X and thus does not generate RxQ0 interrupts.
2025-05-28 03:10:01 +03:00
Bananymous
8aa4e4ff1e
LibC: Implement clearenv
...
This is GNU extension but seems nice to have :D
2025-05-28 03:10:01 +03:00
Bananymous
7eade002a7
LibC: Fix mktime
...
yday calculation was off so results were always off for march-december
2025-05-28 03:10:01 +03:00
Bananymous
a8f8d27f4e
LibC: Implement basic tzset()
...
I still don't have timezone support so this just sets values to UTC
2025-05-28 03:10:01 +03:00
Bananymous
356935bd4f
LibC: Fix strtou{,l,ll} for negative values
...
Also set endp if base is invalid
2025-05-28 03:10:01 +03:00
Bananymous
bce3dd045f
LibC: Fix strncat return value
2025-05-28 03:10:01 +03:00
Bananymous
79a2b84c81
Kernel: Fix process exit when there are multiple threads
2025-05-28 03:10:01 +03:00
Bananymous
44b762f916
Kernel/LibC: Implement pwrite and make pread non-locking
2025-05-28 03:10:01 +03:00
Bananymous
5d80c880c8
LibC: Fix FILE buffering once again :D
2025-05-28 03:10:01 +03:00
Bananymous
b907263f35
LibC: Implement basic tmpfile
2025-05-28 03:10:01 +03:00
Bananymous
0f0accf82c
LibC: Don't use false in pthread initializers
2025-05-28 03:10:01 +03:00
Bananymous
ddcf414107
LibC: Fix netinet/in.h and arpa/inet.h definitions
2025-05-28 03:10:01 +03:00
Bananymous
6be3b1d7f2
commit from banan-os :D
2025-05-27 23:57:43 +00:00
Bananymous
0e0d7016b3
Kernel: Rename has_hangup -> has_hungup
2025-05-17 12:39:23 +03:00
Bananymous
553c76ab0f
Kernel: Add locking to inode's epoll list
...
This was prone to crashing :)
2025-05-17 12:36:36 +03:00
Bananymous
b90cfa8e5c
test-window: poll events instead of sleeping
2025-05-13 10:19:13 +03:00
Bananymous
e7f0cd0c4b
stat: Fix return value when one of stats fails
2025-05-13 10:19:13 +03:00
Bananymous
0661b339a0
test-tcp: Fix name resolution
...
Comparison was the wrong way around so hostname lookup always failed.
2025-05-13 10:19:13 +03:00
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