Commit graph

1171 commits

Author SHA1 Message Date
Andreas Kling
d4973842c9 Kernel: Run the sync daemon once every second.
This is obviously not a final design, but 10 seconds was way too long.
2019-02-17 15:18:35 +01:00
Andreas Kling
8eedbbc9ca Prune compiler flags a bit. Let's go with -march=i686 for now. 2019-02-17 15:17:21 +01:00
Andreas Kling
e952a35994 WindowServer: Assume wallpaper images are 1024x768.
This is obviously not always the right thing to do, but it removes some
confusion while using other resolutions. Eventually we're gonna need some
kind of compressed image decoder.
2019-02-17 13:44:39 +01:00
Andreas Kling
e241f3a801 Kernel: Shrink kmalloc() chunk size from 128 to 64.
This sacrifices some speed for more space. I don't want to work on a new
allocator right this moment, so this buys me some time.
2019-02-17 13:41:15 +01:00
Andreas Kling
0730b3c15f Add ability to switch video modes from the system menu.
I had to change PhysicalPage around a bit for this. Physical pages can now
be instantiated for any arbitrary physical address without worrying that
such pages end up in the kernel page allocator when released.

Most of the pieces were already in place, I just glued everything together.
2019-02-17 13:12:59 +01:00
Andreas Kling
8321908abe LibGUI: Tweak the scrollbar and button styles a bit. 2019-02-17 12:08:28 +01:00
Andreas Kling
ff786aa38a Spawn Launcher and FileManager on startup by default again.
I disabled this while debugging WindowServer-in-userspace, and now that it
works fine we can bring these back up.
2019-02-17 11:31:52 +01:00
Andreas Kling
d5f515cf6c Kernel: Give each FileDescriptor a chance to co-open sockets.
Track how many fds are open for a socket's Accepted and Connected roles.
This allows fork() to clone a socket fd without a subsequent close() walking
all over the parent process's fd.
2019-02-17 11:00:35 +01:00
Andreas Kling
b0be3299b5 WindowServer: Close accepted sockets when the client has disconnected. 2019-02-17 10:59:58 +01:00
Andreas Kling
7bb00ea1e3 Kernel: socket() with SOCK_CLOEXEC was setting the wrong fd flag.
Turns out FD_CLOEXEC and O_CLOEXEC are different values. Silly mistake.
I noticed that Terminal's shell process still had the Terminal's window
server connection open, albeit in a broken state.
2019-02-17 10:41:37 +01:00
Andreas Kling
b6bf26430d Kernel: Have devices automagically register themselves with the VFS. 2019-02-17 10:38:07 +01:00
Andreas Kling
e74c833af3 AK: Fix broken instrumentation code for StringImpl. 2019-02-17 10:35:48 +01:00
Andreas Kling
cf8dd312ab Kernel: Fix String leaks in exec().
When the kernel performs a successful exec(), whatever was on the kernel
stack for that process before goes away. For this reason, we need to make
sure we don't have any stack objects holding onto kmalloc memory.
2019-02-17 10:18:25 +01:00
Andreas Kling
4b15dd2bca LibGUI: Rename GEventLoop::exit() and GApplication::exit() to quit().
These functions don't exit immediately, but rather on the next iteration
of the event loop.

Since exit() is already used by the standard library, let's call it quit()
instead. That way, saying exit() means the same thing here as anywhere else.
2019-02-17 09:59:56 +01:00
Andreas Kling
fa13e1977e Meta: Add some quick instructions for how to build and run this thing. 2019-02-17 09:45:39 +01:00
Andreas Kling
c81b217fa7 SharedGraphics: Assign a human-friendly name for mmapped GraphicsBitmap. 2019-02-17 09:41:26 +01:00
Andreas Kling
df2d46d5dc Kernel: Add SocketRole::Listener and report the role nicely in /proc/PID/fds. 2019-02-17 09:40:52 +01:00
Andreas Kling
a0b55987d3 Kernel: Report the correct name for NullDevice. 2019-02-17 09:40:19 +01:00
Andreas Kling
fa452fadca WindowServer: Let menu objects reference the WSClientConnection by pointer.
Since these are owner/ownee relationships, there's no need for indirection.
2019-02-17 09:07:07 +01:00
Andreas Kling
459cc23441 Kernel: Remove Process::gui_client_id(). 2019-02-17 09:05:49 +01:00
Andreas Kling
f02a490230 WindowServer: Get rid of unnecessary messaging indirection. 2019-02-17 08:58:42 +01:00
Andreas Kling
9a39c01551 WindowServer: WSWindow can have a pointer to the client rather than an ID.
Since WSWindows are owned by WSConnectionClients, it's fine for them to just
reference the client directly.
2019-02-17 08:54:57 +01:00
Andreas Kling
1056a39bd6 WindowServer: Remove some debug spam. 2019-02-17 08:43:49 +01:00
Andreas Kling
bd2fdcbbaa Kernel: Rename BochsVGADevice to BXVGADevice. 2019-02-17 08:41:05 +01:00
Andreas Kling
10b43f3d1d Kernel: Rename Keyboard to KeyboardDevice. 2019-02-17 08:39:09 +01:00
Andreas Kling
2dc0ef8813 Kernel: munmap() should round up to nearest page size, just like mmap().
The mismatch between the two was causing some trouble if you'd mmap e.g 1KB
and then try to munmap() it. The kernel would whine that it couldn't find
any such mapping (because mmap() actually rounded the 1KB to a 4KB page.)
2019-02-17 08:33:13 +01:00
Andreas Kling
82768e7ac5 WindowServer: Move video mode setup to WSScreen. 2019-02-17 01:43:01 +01:00
Andreas Kling
809266a9fb Kernel: Remove tracking of bitmap memory.
There are no more kernel bitmaps. It's much better this way.
2019-02-17 01:16:38 +01:00
Andreas Kling
cc9ff96a98 Kernel: FileDescriptor::absolute_path() should "support" sockets. 2019-02-17 01:11:37 +01:00
Andreas Kling
3eb6c22a22 WindowServer: Make the menubar clock work again in the post-kernel world.
This is actually so much better. Grabbing directly at the RTC was silly. :^)
2019-02-17 01:05:53 +01:00
Andreas Kling
18062f4ad6 LibGUI: Remove some debugging noise. 2019-02-17 01:05:24 +01:00
Andreas Kling
9b2b9fe39b SharedGraphics: Fix #ifdef mismatch in Painter.
This mistake created an incredible amount of confusion. We would allocate
a slightly too small Painter on the stack and then invoke its constructor,
overwriting whatever came after it on the stack.
2019-02-17 00:52:17 +01:00
Andreas Kling
10d6f9ce31 SharedGraphics: Removed some unused stuff from Font. 2019-02-17 00:36:55 +01:00
Andreas Kling
53c69dbade Start the WindowServer process with high priority. 2019-02-17 00:21:26 +01:00
Andreas Kling
640360e958 Move WindowServer to userspace.
This is a monster patch that required changing a whole bunch of things.
There are performance and stability issues all over the place, but it works.
Pretty cool, I have to admit :^)
2019-02-17 00:13:47 +01:00
Andreas Kling
0b1b21d622 LibC: mmap() should not interpret high addresses as errors, oops! 2019-02-16 15:34:31 +01:00
Andreas Kling
c3d36a5fe9 WindowServer: Prune more kernel-related gunk. 2019-02-16 12:25:47 +01:00
Andreas Kling
09aaa41e62 SharedGraphics: Rework GraphicsBitmap::create_kernel_only() into create().
And just use mmap() to allocate the pixels.
2019-02-16 12:22:52 +01:00
Andreas Kling
4ea28bf0a5 Kernel: Add a simple shared memory API for two processes only.
And use this to implement shared bitmaps between WindowServer and clients.
2019-02-16 12:13:43 +01:00
Andreas Kling
4db78dabd3 Kernel: Rename create_framebuffer_wrapper() to create_for_physical_range().
Maybe there will be other types of physical ranges to map in the future.
This API doesn't seem at all specific to framebuffers.
Also tidy up a bit in BochsVGADevice.
2019-02-16 10:58:15 +01:00
Andreas Kling
7210d2ade5 Kernel: Remove knowledge about BochsVGADevice from Process. 2019-02-16 10:40:47 +01:00
Andreas Kling
468113422f Kernel: Add ioctls to BochsVGADevice for mode setting and page flipping.
Use these in WindowServer instead of poking at the BochsVGADevice directly.
2019-02-16 10:26:01 +01:00
Andreas Kling
799177feda Kernel: Make BochsVGADevice a BlockDevice and support mmapping it.
Currently you can only mmap the entire framebuffer.
Using this when starting up the WindowServer gets us yet another step
closer towards it moving into userspace. :^)
2019-02-16 09:57:42 +01:00
Andreas Kling
2dc7c5a7b0 Kernel: Add empty BlockDevice class. 2019-02-16 00:52:58 +01:00
Andreas Kling
994279d56c Kernel: Add Device base class for CharacterDevice.
..to prepare for adding a BlockDevice class.
2019-02-16 00:47:20 +01:00
Andreas Kling
c6ca6522fc Kernel: Sending a signal to another process needs to disable interrupts. 2019-02-15 23:45:01 +01:00
Andreas Kling
749db8237c Ext2FS: Fix various bugs in inode and block allocation.
I had the wrong idea about how group indices work, so using a larger fs
with more than one group caused all kinds of mess.
2019-02-15 23:28:20 +01:00
Andreas Kling
cbfd416279 LibC: The standard C library needs to be able to build as pure C.
Looks like we can't use those comfy C++ attributes in this code then.
2019-02-15 22:37:20 +01:00
Andreas Kling
3b42db0b4c LibC: Fix busted realloc() implementation. 2019-02-15 22:36:59 +01:00
Andreas Kling
df6aaaeeef Enable -Wimplicit-fallthrough. 2019-02-15 12:39:16 +01:00