Andreas Kling
c7ded89f05
LibC: Support backwards copy in memmove().
2019-01-23 08:31:23 +01:00
Andreas Kling
84c4110a50
Keyboard: Support the escape key.
2019-01-23 08:30:48 +01:00
Andreas Kling
7a7fc37ca1
SharedGraphics: Draw an error glyph instead of crashing due to missing glyphs.
2019-01-23 08:07:58 +01:00
Andreas Kling
af06d5edc1
Kernel: Implement a limited version of POSIX poll().
2019-01-23 08:03:31 +01:00
Andreas Kling
b33e367f33
Terminal: Fix crash when scrolling contents while cursor is on first row.
2019-01-23 07:45:23 +01:00
Andreas Kling
cfa197f821
LibC: Let malloc(0) return nullptr.
2019-01-23 07:32:16 +01:00
Andreas Kling
0ebaa35aa1
Kernel: Let the process argv arrays be null-terminated.
...
Seems like this is expected. I don't know why I thought it wasn't.
2019-01-23 07:29:10 +01:00
Andreas Kling
2bedabbd6c
Stub out poll() syscall and LibC wrapper.
2019-01-23 07:28:25 +01:00
Andreas Kling
8bb18fdc56
Kernel: Get rid of Unix namespace.
...
This is no longer needed as the Kernel can stand on its own legs now
and there won't be any conflict with host system data types.
2019-01-23 06:57:00 +01:00
Andreas Kling
69a3aecf6b
LibC: Add vsnprintf(), snprintf(), execvp() and abs().
2019-01-23 06:35:34 +01:00
Andreas Kling
db35d59994
VFS: Move Ext2FSInode::m_lock up to Inode so all inodes can have locking.
2019-01-23 05:42:23 +01:00
Andreas Kling
730c14e647
VFS: Rename FS::id() to fsid() for consistency.
2019-01-23 05:39:11 +01:00
Andreas Kling
a1b4f719ba
VFS: unlink() should fail when called on a directory.
2019-01-23 05:35:42 +01:00
Andreas Kling
754037874c
Move VFS sources into Kernel/.
2019-01-23 05:14:00 +01:00
Andreas Kling
19104570cc
VFS: Remove remnants of standalone builds.
2019-01-23 05:09:11 +01:00
Andreas Kling
e911caeb10
Kernel: Fix dumb race in Scheduler::yield() debug code.
...
It was perfectly possible for Scheduler::yield() to get interrupted after
setting s_in_yield but before disabling interrupts.
2019-01-23 05:06:47 +01:00
Andreas Kling
07f4c8b01b
VFS: Get rid of the deprecated Inode::write(const ByteBuffer&).
...
Fix the only remaining call site to use Inode::write_bytes().
2019-01-23 04:59:47 +01:00
Andreas Kling
906685e238
Ext2FS: Implement writing into inodes with arbitrary offset and length.
...
Okay, this is pretty cool. :^) There are some issues and limitations for
sure but the basic functionality is there.
2019-01-23 04:29:56 +01:00
Andreas Kling
29dfb4ae13
Ext2FS: Factor out block list generation and writing into functions.
2019-01-23 03:03:44 +01:00
Andreas Kling
6fb4033709
Ext2FS: Move inode freeing logic from ~Ext2FSInode() to Ext2FS::free_inode().
2019-01-22 20:49:23 +01:00
Andreas Kling
05f18febb6
Ext2FS: Delete inodes when their link count goes to zero.
2019-01-22 16:34:24 +01:00
Andreas Kling
bda0c935c2
Add unlink() syscall and /bin/rm.
...
This patch adds most of the plumbing for working file deletion in Ext2FS.
Directory entries are removed and inode link counts updated.
We don't yet update the inode or block bitmaps, I will do that separately.
2019-01-22 07:03:44 +01:00
Andreas Kling
2f2f28f212
Kernel: Refactor Region/PageDirectory ownership model.
...
Make PageDirectory retainable and have each Region co-own the PageDirectory
they're mapped into. When unmapped, Region has no associated PageDirectory.
This allows Region to automatically unmap itself when destroyed.
2019-01-22 05:06:22 +01:00
Andreas Kling
afccbe51a4
VFS: Place new files in the correct subdirectory.
...
Oops, every new file was ending up in the root directory.
Also make sure we create the inode in the same FS as the parent directory.
2019-01-22 03:56:34 +01:00
Andreas Kling
4d1d875ca7
Remove some unused errno.h duplicates.
2019-01-22 01:12:53 +01:00
Andreas Kling
f70136a324
Kernel: Support open() with O_CREAT.
...
It's now possible to create zero-length files! :^)
Also hook up the new functionality in /bin/touch.
2019-01-22 00:58:56 +01:00
Andreas Kling
a47f33bed3
WindowServer: Map shared GraphicsBitmaps read-only on the server side.
2019-01-21 19:27:23 +01:00
Andreas Kling
f9fcb682ec
Keyboard: Use some of the existing defines instead of hard-coded numbers.
2019-01-21 07:30:46 +01:00
Andreas Kling
51595603bd
WindowServer: Rename WSEvent subclasses WSFooEvent for consistency.
...
Add a WSWindowInvalidationEvent that carries a rect instead of having an
awkward single-purpose rect in WSEvent.
Flesh out WSKeyEvent a bit more.
2019-01-21 07:28:04 +01:00
Andreas Kling
aefbbeb3cb
Flesh out keyboard event support a bit more.
2019-01-21 07:27:26 +01:00
Andreas Kling
76a2881793
Mark the two Regions used GraphicsBitmaps as explicitly shared.
...
This fixes a goofy problem where forking a GUI process would cowify the
GraphicsBitmap for everyone making a hue confusing mess.
2019-01-21 05:18:28 +01:00
Andreas Kling
d1af5c97ca
Kernel: Process should drop any framebuffer regions on exec().
2019-01-21 03:22:03 +01:00
Andreas Kling
61e50780aa
Kernel: Forked processes should inherit arguments and environment.
2019-01-21 02:59:58 +01:00
Andreas Kling
6127d33cee
guitest2: Add a launcher button for guitest.
2019-01-21 02:56:25 +01:00
Andreas Kling
291922b1af
WindowServer: Show PID and window ID in title bars for now.
...
This is useful for debugging since I'm often wondering which process some
window belongs to (and what the window ID is.)
2019-01-21 02:43:38 +01:00
Andreas Kling
e6fc84e234
Kernel: Make /proc/PID/fds display something useful for character devices.
2019-01-21 02:33:01 +01:00
Andreas Kling
786b903d62
WindowServer: Don't invalidate already frontmost window for moving to front.
2019-01-21 02:19:08 +01:00
Andreas Kling
e115ae5641
Kernel: Clone Process::m_gids on fork() and hook up any framebuffer region.
2019-01-21 01:49:30 +01:00
Andreas Kling
6d9959e367
LibGUI: Open the GUI event stream with O_CLOEXEC.
2019-01-21 01:33:16 +01:00
Andreas Kling
d66b0f7dd8
LibGUI: Mass coding style fixes.
2019-01-21 00:54:35 +01:00
Andreas Kling
6c4f1bad09
guitest2: Add a simple launcher so I can easily spawn more Terminals.
...
Also update GButton coding style.
2019-01-21 00:31:48 +01:00
Andreas Kling
3271c115e2
WindowServer: Only blit dirty rect of windows to back buffer.
...
Previously we'd blit every pixel in every window that intersected any dirty
rect to the back buffer. With this patch, we limit ourselves to blitting the
pixels inside the actual dirty rects.
There's still a lot of optimizations to make in this code.
2019-01-20 23:42:36 +01:00
Andreas Kling
1586bc99e3
WSWindowManager: Add an invalidation and a FIXME.
2019-01-20 08:37:24 +01:00
Andreas Kling
d4cce87dbc
LibGUI: Minor fixes.
2019-01-20 08:16:02 +01:00
Andreas Kling
a9e60fc800
LibGUI: Only redraw the dirty rect in GWidget.
...
There is some trouble here with the asynchronous nature of WindowServer
and the single per-window backing store we're drawing into. If we start
repainting a widget with a pending invalidation, that invalidation might
get flushed by the WindowServer mid-paint.
2019-01-20 07:59:19 +01:00
Andreas Kling
ea6678b7b3
LibGUI: Hook up GWindow event dispatch for paint and mouse events.
2019-01-20 07:03:38 +01:00
Andreas Kling
dbe83f3a83
Make it possible for userspace to alter window title/geometry.
...
I'm not in love with this syscall API but it allows me to make progress.
2019-01-20 06:04:13 +01:00
Andreas Kling
8eae89a405
Start bringing up LibGUI properly (formerly Widgets.)
2019-01-20 05:48:43 +01:00
Andreas Kling
b91479d9b9
Rename all the LibGUI classes to GClassName.
2019-01-20 04:49:48 +01:00
Andreas Kling
a026da47e7
Move Widget & friends into LibGUI.
2019-01-19 23:49:56 +01:00