Andreas Kling
4641ee49b5
Kernel: Add a simple MACAddress class.
2019-03-10 19:15:22 +01:00
Andreas Kling
405413c354
Kernel: Start adding support for E1000 network adapters.
2019-03-10 15:25:33 +01:00
Andreas Kling
37388b311f
ProcessManager: Show some basic system memory stats below the process table.
...
This really improves the feeling of "system overview" :^)
2019-03-10 12:13:22 +01:00
Andreas Kling
46caa2663b
LibGUI: Use a separate data role for the table model sorting order.
...
This allows data to be displayed nicely while sorting happens based on some
underlying raw data. :^)
2019-03-09 14:24:34 +01:00
Andreas Kling
7d1142c7d9
Make it possible to sort a GTableModel by column+order.
...
This is accomplished by putting a GSortingProxyTableModel between the model
and the view. It's pretty simplistic but it works for this use case. :^)
2019-03-09 13:33:52 +01:00
Andreas Kling
eda0866992
Add a C++ helper class for working with shared buffers.
...
This is a bit more comfortable than passing the shared buffer ID manually
everywhere and keeping track of size etc.
2019-03-08 12:24:05 +01:00
Andreas Kling
0b5d5fc3c9
Kernel: Minor tidying in BXVGADevice.
2019-03-08 02:54:39 +01:00
Andreas Kling
a738b5cb69
TextEditor: Open an empty document by default.
2019-03-07 17:15:59 +01:00
Andreas Kling
ac78cdae46
Kernel: Detect the Delete key.
2019-03-07 16:20:00 +01:00
Andreas Kling
8dcec749ed
Kernel: Detect the Home and End keyboard keys.
2019-03-07 13:19:05 +01:00
Andreas Kling
9158de6c41
Begin working on a graphical TextEditor.
...
It's gonna be a wrapper around a new GTextEditor widget so I can easily
reuse the functionality anywhere I need it. :^)
2019-03-07 00:31:06 +01:00
Andreas Kling
e56fe71dbc
Kernel: And some more KResult/KResultOr<T> porting work.
2019-03-06 22:30:13 +01:00
Andreas Kling
028afabf6b
Kernel: Port more code to KResult and KResultOr<T>.
2019-03-06 22:14:31 +01:00
Andreas Kling
e6f389a544
Kernel: Add two error checks for open() to return EISDIR or ENODEV.
2019-03-06 20:27:19 +01:00
Andreas Kling
e53cef02d5
Kernel: Dump kernel stack trace on assertion failure.
2019-03-06 14:05:41 +01:00
Andreas Kling
26a9d662f4
Kernel+WindowServer: Move mouse input signal parsing to kernel driver.
...
It was silly for the WindowServer to have to know anything about the
format of PS/2 mouse packets.
This patch also enables use of the middle mouse button.
2019-03-05 14:01:03 +01:00
Andreas Kling
1cc32ebc7e
Kernel: Remove "requested wakeups" feature.
...
I only needed this to support the WindowServer living inside the kernel.
Now that it's been migrated to userspace, this can go. :^)
2019-03-05 13:34:36 +01:00
Andreas Kling
91031346e5
Kernel: More signal handling improvements.
...
Finally fixed the weird flaky crashing when resizing Terminal windows.
It was because we were dispatching a signal to "current" from the scheduler.
Yet another thing I dislike about even having a "current" process while
we're in the scheduler. Not sure yet how to fix this.
Let the signal handler's kernel stack be a kmalloc() allocation for now.
Once we can do allocation of consecutive physical pages in the supervisor
memory region, we can use that for all types of kernel stacks.
2019-03-05 12:52:35 +01:00
Andreas Kling
9e1fcb74a2
Kernel: Returning from a signal handler reset the signal mask correctly.
...
We were setting the handled signal number as the new signal mask, oops.
2019-03-05 11:00:26 +01:00
Andreas Kling
251293f2e1
Kernel: Block a signal from being dispatched again until handler returns.
...
We don't handle nesting yet, but this is a step in the right direction.
2019-03-05 10:34:08 +01:00
Andreas Kling
67fc42f64e
Kernel: SIGCONT should unblock a blocked process.
...
Otherwise we might stay in BlockedSignal state forever. Unblocking just
means that the current syscall may fail with EINTR.
2019-03-04 11:25:24 +01:00
Andreas Kling
0e4b7990c0
Kernel: Detect the Tab key. :^)
2019-03-03 13:34:29 +01:00
Andreas Kling
57fe316e01
Detect the "Logo" (Windows/Apple/whatever) key and use it for window resize.
...
This will be comfortable enough while I'm still developing with emulators.
QEMU keeps eating my "Alt" key presses and it's making things difficult.
2019-03-03 12:56:48 +01:00
Andreas Kling
159fa99539
Kernel: No need to check is_superuser() after may_execute().
...
Since may_execute() incorporates a superuser check. :^)
2019-03-03 12:34:54 +01:00
Andreas Kling
5e40aa4f1a
LibGUI: Move shortcut actions from GEventLoop to GApplications.
...
I'm gonna want to have nested event loops sooner or later, so let's not
pollute GEventLoop with things that are meant to work globally.
This patch also changes key events to pass around their modifiers as a
bitfield all the way around the system instead of breaking them up.
2019-03-03 12:32:15 +01:00
Andreas Kling
725b57fe1f
Kernel: Try to do the right thing by default for unhandled signals.
2019-03-03 12:13:41 +01:00
Andreas Kling
b0c673265a
Applications: Map Alt+F4 to Quit in FileManager/ProcessManager/Terminal.
2019-03-03 02:52:22 +01:00
Andreas Kling
c350cf7b95
Kernel: Keyboard should detect the Page Up and Page Down keys.
2019-03-02 23:58:09 +01:00
Andreas Kling
2c5a378ccc
Kernel+Userland: Add symlink() syscall and add "-s" flag to /bin/ln.
...
It's now possible to create symbolic links! :^)
This exposed an issue in Ext2FS where we'd write uninitialized data past
the end of an inode's content. Fix this by zeroing out the tail end of
the last block in a file.
2019-03-02 01:52:24 +01:00
Andreas Kling
37f6844c6c
Kernel: Port stat() to KResult/KResultOr<T>.
2019-03-02 00:11:27 +01:00
Andreas Kling
f75eb9af16
Kernel: Support chdir() to a directory that's executable but not readable.
...
Also the superuser should be allowed to resolve any possible path without
getting tripped up by EACCES.
2019-03-01 23:54:07 +01:00
Andreas Kling
274b0260f7
Kernel: Don't send SIGCHLD to parent process if he has SA_NOCLDWAIT set.
...
Just transfer ownership of the dead process to the colonel and let the
scheduler reap it on next iteration.
2019-03-01 15:52:05 +01:00
Andreas Kling
6c2089c59d
Put miscellaneous debug spam behind #ifdefs.
2019-03-01 10:51:58 +01:00
Andreas Kling
1b16a29044
Kernel+Userland: Implement fchmod() syscall and use it to improve /bin/cp.
...
/bin/cp will now copy the permission bits from source to destination. :^)
2019-03-01 10:39:19 +01:00
Andreas Kling
7ee4e79cd6
Kernel: Oops, fix Vector assertion in FS::Sync.
2019-02-28 22:33:00 +01:00
Andreas Kling
6b581aff77
Kernel: Make a copy of the dirty inode list before iterating in sync().
2019-02-28 21:51:59 +01:00
Andreas Kling
e427b514dc
Kernel: Implement basic SIGSTOP and SIGCONT support.
2019-02-28 12:27:26 +01:00
Andreas Kling
c09ab7cc40
Kernel: Only allow sending signals to process you own.
2019-02-28 11:46:38 +01:00
Andreas Kling
258f4671ea
Kernel: kill() syscall should support sending a signal to yourself.
2019-02-28 09:44:48 +01:00
Andreas Kling
166aadc4e1
ProcessManager: Start working on a graphical process manager.
...
I need a table view widget for this thing, so I'm also using this to
prototype a model/view thingy.
2019-02-28 01:43:50 +01:00
Andreas Kling
dda9b9ab1b
Userland: Add a simple /bin/stat program.
2019-02-27 21:45:06 +01:00
Andreas Kling
7c18b86781
Kernel: Allow uid 0 to read/write/execute any file.
2019-02-27 17:08:13 +01:00
Andreas Kling
d7d6deaa5c
Ext2FS: Fix hole in Ext2FSInode::directory_entry_count() locking.
2019-02-27 17:07:34 +01:00
Andreas Kling
60d0a48be5
Kernel: Use KResult in link().
2019-02-27 15:31:26 +01:00
Andreas Kling
5b27f11b97
Kernel: Use KResult in unlink() and rmdir().
2019-02-27 14:11:25 +01:00
Andreas Kling
c9d7fc6ec6
Kernel: chmod() should allow superuser to change mode bits of any file.
2019-02-27 12:34:43 +01:00
Andreas Kling
1d2529b4a1
Add chown() syscall and a simple /bin/chown program.
2019-02-27 12:32:53 +01:00
Andreas Kling
e421c10735
More compat work towards porting vim.
...
It now builds and runs in the small-featureset configuration. :^)
2019-02-27 00:02:01 +01:00
Andreas Kling
424368034b
LibC: Make errno codes be #defines instead of enum values.
...
It turns out that a lot of 3rd party software does things like:
#ifdef EINTR
...
#endif
This won't work if EINTR is an enum. So much for that nice idea.
2019-02-26 22:40:35 +01:00
Andreas Kling
a356746d04
Compat work towards porting vim.
2019-02-26 15:57:59 +01:00