1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-21 14:12:13 +00:00
Commit graph

7285 commits

Author SHA1 Message Date
Andreas Kling
77177dbb76 Kernel: Begin fleshing out bind() syscall. 2019-02-14 14:38:30 +01:00
Andreas Kling
2f35e54f80 Kernel: Begin implementing UNIX domain sockets. 2019-02-14 14:17:38 +01:00
Andreas Kling
8d5ba56cf9 Kernel: Remove ProcessGUI.cpp, merging remainders into Process.cpp. 2019-02-14 10:39:26 +01:00
Andreas Kling
222a6f7bbc WindowServer: Post error messages to clients on protocol failure. 2019-02-14 09:32:34 +01:00
Andreas Kling
aa7947c889 WindowServer: Add WSClientConnection class to manage an individual client.
This makes both object lifetimes and object ID's a lot easier to understand.
2019-02-14 08:22:47 +01:00
Andreas Kling
f529b845ec WindowServer: Convert entire API to be message-based.
One big step towards userspace WindowServer. :^)
2019-02-14 01:21:32 +01:00
Andreas Kling
ef4e9860fd WindowServer: Convert the remaining menu APIs into messages. 2019-02-13 21:47:14 +01:00
Andreas Kling
cf432b4c3d WindowServer: Refactor more of the menu APIs to be message-based.
This is all pretty verbose but I can whittle it down later. :^)
2019-02-13 18:49:23 +01:00
Andreas Kling
fbbf57b61c Rename GUI_Event to GUI_ServerMessage.
Now that communication is becoming bidirectional, "event" is no longer right.
2019-02-13 17:59:38 +01:00
Andreas Kling
4f98a35beb WindowServer: Begin refactoring towards a fully asynchronous protocol.
In order to move the WindowServer to userspace, I have to eliminate its
dependence on system call facilities. The communication channel with each
client needs to be message-based in both directions.
2019-02-13 17:54:30 +01:00
Andreas Kling
c5a00a56c8 WindowServer: Put a clock in the top right corner of the screen.
This way we don't even need the Clock app anymore. Very cool :^)
2019-02-13 09:27:08 +01:00
Andreas Kling
961783e0df Let's have makeall.sh build with make -j2.
The full rebuild keeps getting slower, this makes it a bit more bearable.
2019-02-12 16:34:19 +01:00
Andreas Kling
d74b131c27 Add a little About app and hook it up to the system menu's "About..." entry.
Added icons and customizable text alignment to GLabel.
2019-02-12 15:23:07 +01:00
Andreas Kling
7ce15f1c54 Fix some compilation warnings. 2019-02-12 12:11:22 +01:00
Andreas Kling
f3c8821b0f Bootloader: Bump sector count once again.
This is starting to get cramped. I wonder how much longer this hilarious
frankenloader will be able to boot us.
2019-02-12 12:09:50 +01:00
Andreas Kling
111589a558 Kernel: Make sure processes always start out with fds 0, 1 and 2 open.
If we don't have a TTY for the process, fall back to /dev/null.
2019-02-12 11:25:25 +01:00
Andreas Kling
4b8133e925 WindowServer: Clean up any menu objects on process exit.
..and now that this works, implement the Quit menu action in Terminal. :^)
2019-02-12 10:41:09 +01:00
Andreas Kling
f311d0f353 Kernel: Don't bother trying to pass environment to init's testing processes. 2019-02-12 10:19:52 +01:00
Andreas Kling
db98327bdc Plumb menu item activation events from WindowServer to clients.
GMenu now has an "on_item_activation" callback that fires whenever one
of its items are activated. The menu item identifier is used to distinguish
between items.

Use this to implement font switching in Terminal. :^)
2019-02-12 10:08:35 +01:00
Andreas Kling
9c1c885483 WindowServer: Add locking and fix coalesced invalidation race.
WSWindowManager::invalidate() had a bug where it would mark the entire screen
rect as dirty, but it wouldn't scheduled a deferred recompose.

This would cause any subsequent calls to invalidate(Rect) to be coalesced
with the pending compose, but the pending compose never happened.
2019-02-12 09:25:50 +01:00
Andreas Kling
431e7bf085 PS2MouseDevice: Add current buffer size to debug logging. 2019-02-12 09:22:55 +01:00
Andreas Kling
133706d697 Add API's and plumbing for WindowServer clients to make menus. 2019-02-12 00:52:19 +01:00
Andreas Kling
14c0f18de9 Kernel: Update block cache on write.
If a block is present in the cache, just overwrite the cached block.
2019-02-11 13:18:24 +01:00
Andreas Kling
26230c0647 WindowServer: Remove "unsafe" flag in WSMessageLoop::post_event().
This hack is no longer needed now that we have a Finalizer process that can
take locks without having to worry about the interrupt flag.
2019-02-11 13:05:51 +01:00
Andreas Kling
f8951afe17 Ext2FS: Fix broken logic for accessing inode and block bitmaps.
This logic only worked for the very first block group.
2019-02-11 12:46:56 +01:00
Andreas Kling
298a49c688 IDEDiskDevice: Detect disk errors and report failure to clients.
Previously we'd just fail silently if there was an I/O error of any kind.
2019-02-11 11:38:14 +01:00
Andreas Kling
443b043b49 WindowServer: Start implementing a menu system.
I'm going with a global top-of-the-screen menu instead of per-window menus.
The basic idea is that menus will live in the WindowServer and clients can
create menus via WindowServer requests.
2019-02-11 09:47:10 +01:00
Andreas Kling
6b2d2cc5e3 Create /dev files for null, full, zero and random. 2019-02-11 06:59:28 +01:00
Andreas Kling
18962bf102 Kernel: Oops, the kernel image access validator thought 0x0 was allowed.
We forgot to look at the ELF segment type when validating accesses.
We should only consider accesses inside non-empty LOAD segments.
2019-02-11 06:05:12 +01:00
Andreas Kling
7014daa235 Kernel: Add an LRU block cache.
This papers over some of the incredibly inefficient access patterns in the
Ext2FS implementation for a while longer. :^)
2019-02-10 20:07:14 +01:00
Andreas Kling
ae4811fbae ProcFS: Show region flags in /proc/PID/vm
It's useful to be able to see the readable, writable and bitmap flags.
2019-02-10 13:02:38 +01:00
Andreas Kling
6103e374cc Kernel: Drop the "helper" region after ELF load is finished.
The individual segment mappings will keep the VMObject alive.
2019-02-10 12:47:15 +01:00
Andreas Kling
9860e55047 Kernel: Put page fault logspam behind PAGE_FAULT_DEBUG. 2019-02-10 11:37:59 +01:00
Andreas Kling
5e8d6b1bf4 Base: Rename /users to /home.
I didn't like seeing /users next to /usr. /home looks nicer.
2019-02-10 11:18:12 +01:00
Andreas Kling
2def3d8d3f LibGUI: Start adding an automatic widget layout system.
My needs are really quite simple, so I'm just going to add what I need
as I go along. The first thing I needed was a simple box layout with
widgets being able to say whether they prefer fixed or fill for both
their vertical and horizontal sizes.

I also made a simple GStatusBar so FileManager can show how many bytes
worth of files are in the current directory.
2019-02-10 11:07:13 +01:00
Andreas Kling
2cf1dd5b6f Move apps into a top-level Applications/ directory. 2019-02-10 08:35:01 +01:00
Andreas Kling
cc04ba9cc9 ProcFS: /proc/sys entries should always be regular 644 files. 2019-02-10 06:10:01 +01:00
Andreas Kling
4d5fe39494 FileManager: Start building a file manager. 2019-02-09 09:22:04 +01:00
Andreas Kling
c4e984ca49 Kernel: Allow mmap() with a size that's not a multiple of page size.
We just round it up to the next multiple of page size anyway.
2019-02-09 08:44:46 +01:00
Andreas Kling
fa241747af Kernel: When donating ticks to a lock holder, cap the donation.
When donating ticks to a lock holder, never donate more ticks than
that process would normally get from the scheduler.
2019-02-08 22:06:30 +01:00
Andreas Kling
6274208eb9 Ext2FS: Fix bitmap overrun when reaching outside the first block group. 2019-02-08 17:14:51 +01:00
Andreas Kling
a6f9ddbb58 Let's have two wallpapers installed so we can test switching. 2019-02-08 17:14:47 +01:00
Andreas Kling
d4ba155711 Kernel: Break retain cycle between Inode and VMObject.
There's no need for an Inode to keep its corresponding VMObject alive.
Obviously there are huge benefits to keeping a filesystem cache,
but leaking everything is hardly the right strategy. :^)
2019-02-08 16:40:48 +01:00
Andreas Kling
e1be5a468d Userland: Add a /bin/pape helper program to switch the desktop wallpaper. 2019-02-08 16:22:54 +01:00
Andreas Kling
33d34d9b26 Kernel: Use a Lockable<bool> for sysctl booleans as well. 2019-02-08 16:18:24 +01:00
Andreas Kling
f8fc892bac Remove _fs_contents.stock and generate it on the fly instead. 2019-02-08 09:56:39 +01:00
Andreas Kling
a3799cb71e ProcFS: Add sysctl strings.
They are backed by a Lockable<String> to ensure that access is synchronized.
2019-02-08 09:46:46 +01:00
Andreas Kling
7e623e7ff2 Process: Dump regions when a ring0 process crashes. 2019-02-08 09:45:53 +01:00
Andreas Kling
90d3375dc2 WindowServer: Support desktop wallpapers.
For now, you don't get to choose the wallpaper, but it's still pretty cool.
2019-02-08 08:45:59 +01:00
Andreas Kling
2736957701 Ext2FS: Fix dumb bitmap size bug in *_inode_allocation_state(). 2019-02-08 08:43:08 +01:00