Bananymous
fc6c39e670
LibC: Implement gettimeofday()
2024-07-31 23:26:06 +03:00
Bananymous
e52dac3b25
LibC: Implement tmpnam()
...
This implementation is not really spec compliant as rand() does not
guarantee TMP_MAX different outputs + seeding
2024-07-30 12:02:30 +03:00
Bananymous
62db9a8ef3
LibC: Implement C++ static guards
2024-07-30 12:02:05 +03:00
Bananymous
f0be4f86a6
LibC/Kernel: Implement access
2024-07-30 11:51:07 +03:00
Bananymous
e5bb843059
LibC/Kernel: Implement ttyname
2024-07-30 11:41:18 +03:00
Bananymous
ca774dfeb5
LibC: Implement setlocale() for C locale
2024-07-30 11:33:02 +03:00
Bananymous
681d8327f5
LibC/Kernel: Cleanup termios code
...
This is still not correct, but much better than it used to be
2024-07-30 11:10:43 +03:00
Bananymous
e00efca170
Userspace: Pprogram template and loadfont mark install as optional
2024-07-21 17:41:40 +03:00
Bananymous
3ab1214012
LibC: Fix _toupper and _tolower definitions
...
They were using C++ global namespace, which of course does not exist for
C targets.
2024-07-18 01:10:51 +03:00
Bananymous
61f0043cd8
resolver: Fix infinite debug printing loop, if client disconnects
2024-07-16 15:05:07 +03:00
Bananymous
5b8fdbc82d
LibC: Don't expose math.h in stdlib.h
2024-07-16 12:47:38 +03:00
Bananymous
a5cb4057f9
Kernel: Implement unified input files for device hot-plugging support
...
/dev/keyboard and /dev/mouse can be read for events from any attached
keyboard or mouse respectively. This makes device hot-plugging support
pretty much automatic for TTY, GUI, and whatever takes input.
2024-07-15 22:11:15 +03:00
Bananymous
442ea8a692
BAN: Remove Optional emplace constructor
...
This was kind breaking some initializations. Emplacing is still possible
through Optional::emplace
2024-07-14 01:53:50 +03:00
Bananymous
a97a574718
Kernel: Rewrite the whole input system
...
PS/2 code is now kind of messed up, but it works. Keyboards and mice are
now an abstract class that is automatically exposed to userspace. This
will make adding USB input much nicer.
2024-07-14 01:53:50 +03:00
Bananymous
8ddab05ed3
BuildSystem: Cleanup userspace directory layout
...
userspace programs are now in userspace/programs
userspace tests are now in userspace/tests
This makes listing userspace projects much cleaner. Libraries were
already separated to their own directory, so other programs should also.
2024-07-03 09:18:02 +03:00
Bananymous
5dc441c4af
Kernel/userspace: Implement KD_LOADFONT and loadfont program
2024-07-03 09:02:49 +03:00
Bananymous
d58a569660
WindowServer: Limit msync to 60 Hz and only sync necessary pages
...
This speeds up GUI a lot. I can now run GUI on real hardware at almost
60 Hz.
2024-06-29 19:00:58 +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
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
95681a7a05
LibImage: Cleanup bicubic calculations
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
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
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
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
aaf7a249c6
image: Add nicer error message if image could not be parsed
2024-06-17 22:58:59 +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
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
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
a9b0bfa740
LibC: Make ino_t always 64 bit
2024-06-14 00:18:21 +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
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
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
c2b6ba0d5a
Userspace: Start work on GUI and WindowServer
...
Current implementation can create custom windows and each window has
its own framebuffer. When window wants to write its framebuffer to the
screen it will send a message to the WindowServer using unix sockets.
2024-05-29 16:00:54 +03:00
Bananymous
8bc6c2eb20
Kernel: Move KeyEvent/MouseEvent from kernel to LibInput
2024-05-28 23:30:08 +03:00
Bananymous
cc2cc2849e
Whoami: Rewrite whoami using getlogin
2024-05-23 15:44:21 +03:00
Bananymous
06f4b0b29a
BAN: Make String and StringView header only
...
This allows linking with libc without having to link ban
2024-05-23 15:43:26 +03:00
Bananymous
967f9a9174
Shell: Ignore tab as that just fucks up formatting
2024-05-07 14:16:17 +03:00
Bananymous
414f0f6cd9
Userspace: Don't link with libc
...
This fixes bug where sometimes cmake does not find libc from sysroot
LibC is linked per program in its own CMakeLists.txt
2024-04-03 14:46:18 +03:00
Bananymous
5dbe51a52e
Userspace: Update printf formats to compile on 32 bit
2024-03-26 03:03:33 +02:00
Bananymous
7f5c850744
Userspace: Add us keymap and make it default
2024-03-19 12:30:57 +02:00
Bananymous
b979023b9d
Shell: Add test cases for stroul and strod in builtin `test-strtox`
2024-02-16 15:35:02 +02:00
Bananymous
c469d9b3ff
Shell: Add builtin test for strtol `test-strtol`
2024-02-14 22:38:16 +02:00
Bananymous
1f467580ee
Userspace: Add test for popen
2024-02-14 17:23:26 +02:00
Bananymous
7eb5d220fd
Userspace: Implement getopt for testing libc getopt()
2024-02-14 15:01:27 +02:00
Bananymous
420a7b60ca
resolver: use select for client communication
2024-02-12 23:47:39 +02:00
Bananymous
ccde8148a7
Userspace: Implement basic udp test program
2024-02-12 04:45:42 +02:00
Bananymous
b9bbf42538
Userspace: Implement basic test program for tcp connection
2024-02-12 04:45:42 +02:00
Bananymous
f117027175
resolver: dump errors to debug output
2024-02-08 18:34:15 +02:00
Bananymous
5a939cf252
Userspace: Add simple test for unix domain sockets
2024-02-08 13:18:54 +02:00
Bananymous
065ee9004c
Userspace: Add DNS cache to resolver
...
Also the format of resolver reply is now just sockaddr_storage with
family set and address in the storage field.
2024-02-08 12:06:30 +02:00
Bananymous
2424f38a62
Userspace: Implement super simple DNS resolver in userspace
...
You connect to this service using unix domain sockets and send the
asked domain name. It will respond with ip address or 'unavailable'
There is no DNS cache implemented so all calls ask the nameserver.
2024-02-08 03:14:00 +02:00
Bananymous
40e341b0ee
BAN: Remove unstable hash map and set
...
These can now be implemented safely with new linked list api
2024-02-06 17:35:15 +02:00
Bananymous
f804e87f7d
Kernel: Implement basic gateway for network interfaces
2024-02-05 18:18:56 +02:00
Bananymous
b2291ce162
Kernel/BAN: Fix network strucute endianness
2024-02-05 18:18:56 +02:00
Bananymous
89805fb092
dhcp-client: Use dprintln for debug printing
2024-02-05 01:24:45 +02:00
Bananymous
692cec8458
Kernel/Userspace/LibC: Implement basic dprintln for userspace
2024-02-05 01:24:09 +02:00
Bananymous
79897e77dc
dhcp-client: Remove packet send test :D
2024-02-03 18:04:31 +02:00
Bananymous
2138eeb87f
Userspace: Implement super simple DHCP client
2024-02-03 02:41:06 +02:00
Bananymous
7cb71ec6fb
test-sort: Test more algorithms and cleanup output format
2024-02-01 15:22:28 +02:00
Bananymous
9213dd13bc
dd: Improve output format
...
Include written bytes and speed with units
2024-02-01 00:06:46 +02:00
Bananymous
210b24b6e3
AOC2023: Delete file that should not be committed...
2024-01-24 15:53:38 +02:00
Bananymous
dfe5a2d665
All: Cleanup all files
...
Add newline to end of files and remove whitespace from end of lines
2024-01-24 15:53:38 +02:00
Bananymous
64a63fa4be
Userspace: Add loadkeys program to change keymap
2024-01-10 14:57:50 +02:00
Bananymous
51214ea1bf
Kernel: Add load_keymap syscall and load Finnish keymap in init
2024-01-10 14:46:29 +02:00
Bananymous
40f55be587
Userspace: Write simple mouse test program
...
This program draws circle on framebuffer, that you can move with
mouse, resize with scroll, and recolor with mouse buttons.
2024-01-04 19:50:26 +02:00
Bananymous
753de3d9f0
ls: Write group name instead of gid in list mode
2024-01-03 00:15:13 +02:00
Bananymous
1bd33e76e5
cat/cat-mmap: print newline if file doesn't end in one
2024-01-02 23:27:13 +02:00
Bananymous
96d831c31a
Kernel/LibC/Userspace: Implement chown and set tty owner on login
2024-01-02 22:19:38 +02:00
Bananymous
8b5e437936
AOC2023: Implement day25 part1
...
7 starts missing + partly broken day22. I might finish these soon...
2023-12-26 20:04:42 +02:00
Bananymous
d87fa1a7ea
AOC2023: Implement day24 part1
2023-12-26 14:10:49 +02:00
Bananymous
910a57089b
AOC2023: Implement day23 part1
...
My day22 implementation is off by couple of bricks...
2023-12-26 00:56:35 +02:00
Bananymous
36590fb5c7
AOC2023: Implement day21 part1
2023-12-24 14:58:21 +02:00
Bananymous
ce990c3026
AOC2023: Implement day20 part1
2023-12-24 13:39:26 +02:00
Bananymous
4146f2777b
AOC2023: Implement 10 hour solution to day19 part2
2023-12-23 20:53:50 +02:00
Bananymous
64323c51e6
AOC2023: Implement day19 part 1
2023-12-23 18:47:44 +02:00
Bananymous
a0200a7b10
AOC2023: Implement day18 part 1
2023-12-23 18:47:21 +02:00
Bananymous
8add759b5d
AOC2023: Implement day17 part1
2023-12-23 18:46:43 +02:00
Bananymous
2faf90bc2b
AOC2023: Add script to create day template and download input
2023-12-23 18:46:14 +02:00
Bananymous
762d575d70
AOC2023: Add program to run all days
2023-12-23 18:45:40 +02:00
Bananymous
3b21cc90ae
AOC2023: Add helper for downloading puzzle input
2023-12-19 22:22:31 +02:00
Bananymous
4e900804b8
AOC2023: Implement day16
2023-12-19 22:22:16 +02:00
Bananymous
9ec733904f
AOC2023: Implement day15
2023-12-19 21:42:59 +02:00
Bananymous
f46240e879
AOC2023: Implement day14
2023-12-19 02:49:48 +02:00
Bananymous
68627995f8
AOC2023: Implement day13
2023-12-19 01:25:23 +02:00
Bananymous
d273c5e77c
rm: Use remove instead of unlink for removing files
2023-12-14 11:03:58 +02:00
Bananymous
8344f2f9ab
AOC2023: Fix day3 implementation
...
I accidently broke my day3 when messing with signed/unsigned integers
2023-12-14 11:03:19 +02:00
Bananymous
862993398d
AOC2023: Implement day12
...
There seems to be a problem with my malloc so the hash map is not
working. This code worked fine on my linux with actually working
malloc :D
2023-12-14 10:51:48 +02:00
Bananymous
225c7c6ab4
AOC2023: Implement day11
2023-12-11 14:36:33 +02:00
Bananymous
58633ca373
AOC2023: Remove unnecessary loop
2023-12-10 20:18:59 +02:00