Bananymous
1a844426c3
Kernel: Add fast path for framembuffer sync if bpp == 32
2024-06-28 23:34:11 +03:00
Bananymous
42237a3bc8
Kernel: Implement fast scrolling for TTY
2024-06-28 23:15:03 +03:00
Bananymous
010c2c934b
BAN: Write RefPtr and WeakPtr to be thread safe
2024-06-28 22:00:29 +03:00
Bananymous
48a76426e7
BAN: Add more APIs for Atomic and make compare_exchage take a reference
2024-06-28 21:47:47 +03:00
Bananymous
0c645ba867
LibGUI: Window now uses double buffering
...
This allows data in shared memory object be always up to date. With this
change window server can update lazily, and not necessarily on all
invalidate calls
2024-06-27 00:39:59 +03:00
Bananymous
f538dd5276
test-tcp: Fix printing of "connection reset" when tcp connection closed
2024-06-27 00:39:22 +03:00
Bananymous
31568fc5a1
Kernel: Rewrite Sockets to not be TmpInodes
...
TmpInodes just caused issues because TmpFS kept them alive. There was
really no reason for sockets to even be stored inside a TmpFS...
2024-06-27 00:35:19 +03:00
Bananymous
44c7fde2f7
BAN: Fix Function requires clause argument forwariding
2024-06-27 00:33:50 +03:00
Bananymous
cb07142832
Kernel: ACPI allow more calling or \_S5
...
Spec says that \_Sx must have 4 fields, but virtual box seems to only
have the two defined once. This patch allows shutodown on virtual box
2024-06-25 23:25:10 +03:00
Bananymous
60a05412c9
Kernel: ACPI implement SizeOf
2024-06-25 23:24:51 +03:00
Bananymous
0179f5ea09
Kernel: ACPI add \_OS string
2024-06-25 23:24:19 +03:00
Bananymous
f671ed7e3f
Kernel: ACPI implement integer stores to registers as copies
...
Before storing const integer and then modifying the register it would
error.
2024-06-25 23:23:52 +03:00
Bananymous
2fccff5a35
Kernel: Implement ACPI IndexOp into Strings
2024-06-25 23:23:00 +03:00
Bananymous
cd41d5f6dd
ports: DOOM install now downloads and installs doom1.wad
2024-06-25 19:57:15 +03:00
Bananymous
66905fcc08
http-server: Make http-server actually usable
...
http-server now implements basic static content from a specified
directory.
2024-06-25 19:36:10 +03:00
Bananymous
af4b138094
Kernel/LibC: Implement realpath
...
realpath is implemented as a syscall. This is not really required but it
was the easiest way to get it working as there is already path
canonicalization at kernel level.
2024-06-25 19:32:40 +03:00
Bananymous
3c57e05a65
BAN: Implement hash for StringView
2024-06-25 19:28:45 +03:00
Bananymous
25099b4c98
Kernel: Don't validate O_SEARCH for non-directories
2024-06-25 19:27:55 +03:00
Bananymous
1ac7629459
BAN: Implement StringView::rfind()
2024-06-25 11:04:03 +03:00
Bananymous
95681a7a05
LibImage: Cleanup bicubic calculations
2024-06-25 11:04:03 +03:00
Bananymous
d7b8458a56
Kernel: Fix TCP sending
...
TCP send was effectively always waiting for connection to close and then
return a value of 0.
2024-06-25 11:04:03 +03:00
Bananymous
67dfe0bcf3
BAN: Allow String::formatted to fail
2024-06-25 11:04:03 +03:00
Bananymous
b1869bced4
BAN: Implement StringView::starts_with()
2024-06-25 11:04:03 +03:00
Bananymous
61aa1ea11f
sudo: Fix installation permissions
...
I had accudentally removed SETUID bit from sudo. This required to
elevate the permissions.
2024-06-24 15:00:08 +03:00
Bananymous
20aa7c79d1
BuildSystem: Fix crt file installation
...
crt files should be installed always before userpace programs are
linked.
2024-06-22 17:30:00 +03:00
Bananymous
22548a3f4a
BuildSystem: Fix crt file installation
...
crt files for userspace are now a dependency of libc, which means that
everytime libc gets installed, crt files will also install.
This fixes the problem when building libc
2024-06-21 17:10:58 +03:00
Bananymous
9e1b5cbaab
BuildSystem: Cleanup CMake code to allow libc only installation
...
There was no way to just install libc which is required for stdlibc++
2024-06-21 01:45:14 +03:00
Bananymous
1488ec5a03
Userspace: Implement the most basic http server
...
This server just responds with static http "hello world" to every
incoming request
2024-06-20 13:29:01 +03:00
Bananymous
4f0457a268
Kernel: Rewrite a lot of TCP code and implement TCP server sockets
...
TCP stack is now implemented much closer to spec
2024-06-20 13:26:50 +03:00
Bananymous
30fdc2198f
BAN: Add exchage() to Atomic<T>
2024-06-20 13:24:42 +03:00
Bananymous
bce16cdd6e
Kernel: Fix how socket closing works
...
Sockets are now closed only when they are not referenced any more. This
allows child process to close socket and still keep it open for the
parent.
2024-06-19 10:39:44 +03:00
Bananymous
d5daa46ab8
General: Add default .vscode directory
...
The .vscode contains 2 C++ profiles that use my custom toolchain and
correct library include paths. One configuration is for kernel and other
for userspace
2024-06-19 10:16:20 +03:00
Bananymous
ad6d95ba52
BuildSystem: Rework the whole cmake build system
...
Now files are installed using the install() command instead of manually
copying files to their destinations. This allows automatic recompilation
of headers that did not work previously
2024-06-19 09:40:03 +03:00
Bananymous
318ce5dec8
All: Fix a lot of compiler warnings from header files
...
While reworking build system, header files started to report warnings.
2024-06-18 23:02:10 +03:00
Bananymous
526d4369ce
Ports: Don't throw error if _installed_ does not exist
...
This was annoying and I got multiple people reporting it as a possible
bug.
2024-06-18 13:16:33 +03:00
Bananymous
c69919738b
BuildSystem: Move all userpace libraries under the userspace directory
...
As the number of libraries is increasing, root directory starts to
expand. This adds better organization for libraries
2024-06-18 13:14:35 +03:00
Bananymous
1b5a01a6c9
LibImage: Add support for PNG images
...
I have not tested images with less than 8 bits per color or images with
indexed color as gimp could not export those. There is currently no
support for interlaced images.
2024-06-18 02:37:46 +03:00
Bananymous
f233715b70
BAN: Add d{print,want,error}ln_if macros for userspace
2024-06-18 02:35:45 +03:00
Bananymous
a58ac18fa0
BAN: Add move constructors to ByteSpan
2024-06-18 01:52:02 +03:00
Bananymous
f1e366d36f
Kernel: Free keyboard mutex while waiting for data to read
...
This was making select hang if one thread was trying to read from
keyboard.
2024-06-17 23:04:37 +03:00
Bananymous
301dcd78cc
LibImage: Compile with -O3
...
This makes image resizing with cubic interpolation around 10x faster
2024-06-17 23:03:52 +03:00
Bananymous
65c6d62a15
LibImage: Start work on PNG decoding
...
This patch adds PNG decoder that currently only inflates the PNG's zlib
deflate stream
2024-06-17 22:58:59 +03:00
Bananymous
aaf7a249c6
image: Add nicer error message if image could not be parsed
2024-06-17 22:58:59 +03:00
Bananymous
0bc8d49684
LibImage: Add image format probing
...
Instead of determining the image type in Image.cpp call image probing
functions for each supported image type
2024-06-17 22:14:43 +03:00
Bananymous
17ecbca204
BAN: Add network_endian_to_host
2024-06-17 22:14:43 +03:00
Bananymous
78928b7eb4
Ports: Add curl port!
2024-06-17 21:40:13 +03:00
Bananymous
5236e1ef0d
LibC: Add dummy functions for rename() and strftime()
...
I don't really want to implement them right now, but they are required
to exist for some ports.
2024-06-17 21:02:37 +03:00
Bananymous
be7ed8e74a
Kernel/LibC: Implement {get,set}sockopt()
...
These are pretty much dummy functions in the kernel side. Only case that
is handled is SOL_SOCKET with SO_ERROR. This is hard coded to return no
error. Network stack is currently synchronous, so all errors are already
reported through synchronous network functions.
2024-06-17 20:56:48 +03:00
Bananymous
78bcb85679
LibC: Implement gethostbyname()
...
This is not a POSIX function, but curl seems to depend on it. It is
even deprecated on linux...
2024-06-17 20:55:50 +03:00
Bananymous
b98bb9eb27
LibC: Add HOST_NAME_MAX definition
2024-06-17 20:55:17 +03:00
Bananymous
cad55a4da5
Kernel/LibC: Implement getsockname for ipv4 sockets
2024-06-17 20:54:45 +03:00
Bananymous
511fc870a1
BAN: Mark RefPtr and WeakPtr operator bool() as explicit
2024-06-17 20:19:36 +03:00
Bananymous
dafd2fecf7
LibC: Implement gmtime() and localtime()
...
localtime() just returns gmtime() as there is no timezone support
2024-06-17 16:51:41 +03:00
Bananymous
9c5cca784e
LibC: Implement bsearch()
2024-06-17 16:51:24 +03:00
Bananymous
1138165308
LibC: Define PF_* macros on sys/socket.h
2024-06-17 16:50:03 +03:00
Bananymous
d7eb321d58
LibC: Make assert() macro a void expression
2024-06-17 16:49:26 +03:00
Bananymous
15f8c7014f
BAN: Add line endings to d{warn,error}ln
2024-06-17 16:48:56 +03:00
Bananymous
dd64e2060e
WindowServer: Add support for background images
...
WindowServer now looks in _$HOME/.config/WindowServer.conf_ for a
configuration file that can specify a background image.
Also add default background image /usr/share/images/sample.ppm to the
base sysroot provided in the git repo.
2024-06-16 00:28:09 +03:00
Bananymous
14d4551476
LibImage: Add rgba getter for Image::Color
...
Actually the format is 0xAARRGGBB which is what my framebuffer uses.
2024-06-16 00:23:02 +03:00
Bananymous
e6549b0fe8
LibImage: Implement (bi)cubic interpolation
...
This is kind of slow but yields much nicer results compared to
(bi)linear interpolation. I should probably add gamma correction...
2024-06-15 23:05:10 +03:00
Bananymous
157e05f57c
image: Implement --scale argument to scale image to framebuffer
...
Also fix bug where red and blue channels were flipped
2024-06-15 17:24:01 +03:00
Bananymous
96efd1e8b9
LibImage: Implement image resize using nearest or bilinear filters
2024-06-15 17:23:24 +03:00
Bananymous
672ce40618
LibImage: Move userspace image parsing to its own library
...
The image utility now uses this tool instead of parsing images on its
own.
2024-06-14 11:05:54 +03:00
Bananymous
05e9d76c77
BAN: Implement will_{addition,multiplication}_overflow
2024-06-14 11:04:29 +03:00
Bananymous
ea7fc7f6c4
Kernel: Implement read-only FAT12/16/32 driver with long name support
...
You can now mount FAT filesystems! This code might not work perfectly
but my quick testing seemed to work on all (FAT12/16/32) variants.
2024-06-14 01:04:12 +03:00
Bananymous
6b1d5d28be
Kernel: VFS root now has to be block device instead of partition
2024-06-14 00:19:12 +03:00
Bananymous
a9b0bfa740
LibC: Make ino_t always 64 bit
2024-06-14 00:18:21 +03:00
Bananymous
cc6b80a55b
BAN: Optimize Vector copy assignment to reduce allocations
...
If vector contains enough elements, it will now replace old elements
instead of clearing and reallocating
2024-06-14 00:17:28 +03:00
Bananymous
6707989cd5
BAN: Implement same_as and add requires for BAN::Function with lambda
...
BAN::Function(lambda) now requires that the object is callable and
returns the correct type. This allows overloads with different
callback formats.
2024-06-14 00:15:48 +03:00
Bananymous
766439db6d
Kernel: Start work on adding support for new filesystems
...
Old code tried to create ext2 filesystem from all devices.
2024-06-11 10:50:26 +03:00
Bananymous
d4903caafa
Kernel: Combine consecutive mouse move and scroll events
...
This makes mouse work much smoother when running without kvm.
2024-06-11 00:07:31 +03:00
Bananymous
caa0111c79
BAN: Implement back() for CircularQueue
2024-06-11 00:05:11 +03:00
Bananymous
ffacff67cf
LibFont: Move PSF code to separate file
2024-06-10 16:10:05 +03:00
Bananymous
f43a7fdfb4
Ports/doom: Doom now runs inside a window
2024-06-10 16:10:05 +03:00
Bananymous
7bb1a3906d
BuildSystem: Run kvm-ok to determine kvm access
2024-06-10 16:10:05 +03:00
Bananymous
530c259e71
Kernel: Close unix domain socket when it gets destoyed
...
Inode closing is something that needs a complete rework. Currently all
sockets are closed when close() is called, which leads to connection
closing if you fork()/exec() with socket being marked as CLOEXEC.
Inodes should probably only be closed once they are not referenced
anywhere.
2024-06-03 18:06:01 +03:00
Bananymous
843a6851c4
Userspace: Start work on a terminal emulator
...
Terminal is still missing some ANSI codes, cursor and pseudo terminal
support.
Shell's builtin start-gui now launches a Terminal instead of test
windows.
2024-06-03 18:04:33 +03:00
Bananymous
234051d6bc
Shell: Optimize drawing characters at the end of a command
2024-06-03 18:03:19 +03:00
Bananymous
981c0eb8bc
Shell: Only set terminal properties if STDIN is a TTY
2024-06-03 18:02:49 +03:00
Bananymous
1066855532
LibGUI: Mark Window's server fd as CLOEXEC and expose it through API
2024-06-03 18:01:34 +03:00
Bananymous
f2d6518311
LibGUI: Add new drawing APIs to LibGUI::Window
2024-06-03 18:00:50 +03:00
Bananymous
765ccfa18c
Kernel: Deliver SIGCHLD on process exit and ignore it properly
2024-06-03 17:58:24 +03:00
Bananymous
201aee3119
LibInput: Implement key_to_utf8_ansi
...
This function outputs utf8 encoding of a key event or ansi code for
everything it is applicable (arrows, ctrl+..., ...)
2024-06-03 17:52:43 +03:00
Bananymous
65f299038d
BAN: Implement traits {true,false}_type with integral_constant
2024-06-03 17:51:44 +03:00
Bananymous
bd1290706a
Kernel: Implement SharedMemoryObject cloning
2024-06-03 03:41:00 +03:00
Bananymous
939cbf46e4
BAN: Implement BAN::UTF8::to_codepoint() for single byte types
2024-06-03 03:39:57 +03:00
Bananymous
aec5a09caf
Kernel/LibC: Implement SYS_ISATTY and isatty()
2024-06-03 03:36:25 +03:00
Bananymous
6346d1b6c7
Shell: Add builtin command for starting window server and test windows
2024-06-02 17:27:40 +03:00
Bananymous
05ee242b80
WindowServer: Add window title to title bar and send close events
2024-06-02 17:27:09 +03:00
Bananymous
64be3f05a3
LibGUI: Add 10 second timeout for connecting to WindowServer
2024-06-02 17:25:17 +03:00
Bananymous
cfdce9be61
BAN: Mark RefPtr and WeakPtr helper destructors virtual
...
Also fix a bug in WeakPtr::lock() which would assert false if the
underlying weak link was not initialized
2024-06-02 16:50:26 +03:00
Bananymous
446220494e
Kernel: Unix domain sockets close can now be detected
...
When a unix domain socket is closed and it has a connection to another
socket, it will make the other socket readable and recv will return 0.
This allows detection of socket closing
2024-06-02 16:48:55 +03:00
Bananymous
f12ffa92a0
LibFont: Font::get_glyph() now returns nullptr if glyph does not exist
...
This allows getting glyphs with a single hash lookup
2024-05-31 13:05:07 +03:00
Bananymous
b2a4797d16
BAN: Fix dwarnln and derrorln stop color
2024-05-31 13:04:36 +03:00
Bananymous
8bfacb0091
Kernel: Implement deletion of SMO objects
2024-05-31 13:04:23 +03:00
Bananymous
0501f3bd99
Kernel: Move font code to its own library LibFont
2024-05-31 10:47:05 +03:00
Bananymous
ae3ae6fd0e
WindowServer: Fix partial invalidation over cursor
2024-05-31 03:20:21 +03:00
Bananymous
011a5f57e1
WindowServer: Add title bars and clean up code
2024-05-31 03:02:58 +03:00
Bananymous
84b3289a2a
Kernel: Move Scheduler::yield() lock check after interrupts disabled
...
I have no idea why this solves a bug where current processor has
scheduler lock at the beginning of yield.
2024-05-31 02:56:39 +03:00
Bananymous
b760892de2
Kernel: Make pselect use nanosecods instead of milliseconds
2024-05-31 02:56:17 +03:00