Andreas Kling
15fb917f28
Convert more RetainPtr use to Retained.
2019-02-25 16:04:08 +01:00
Andreas Kling
2cfcbdc735
AK: Add Retained<T>, like RetainPtr, but never null.
...
Also use some Clang attribute wizardry to get a warning for use-after-move.
2019-02-25 12:43:52 +01:00
Andreas Kling
9fd4f4862b
Kernel: Make dump_backtrace() kinda sorta work.
2019-02-24 14:51:48 +01:00
Andreas Kling
d218686c0a
Ext2FS: Don't copy more than sizeof(ext2_inode) bytes of raw inode data.
...
Some file systems have inodes larger than sizeof(ext2_inode) so this would
stomp all over unrelated data.
2019-02-24 14:24:04 +01:00
Andreas Kling
a7a456002e
LibC: Enough compat work to make binutils-2.32 build and run.
2019-02-23 17:24:50 +01:00
Andreas Kling
75b100673f
Switch over to building everything with i686-elf-g++.
2019-02-22 10:45:32 +01:00
Andreas Kling
afa6f88039
Throw away the Clock app since we now have a clock in the menubar. :^)
2019-02-22 10:42:29 +01:00
Andreas Kling
6788dcdb58
Start fixing things up to build with a proper cross-compiler.
2019-02-22 10:23:28 +01:00
Andreas Kling
1da261eeb6
Ext2FS: Tweak a debug message to print file mode in octal.
2019-02-22 09:13:05 +01:00
Andreas Kling
f98dcbf1d6
Kernel: Respect the process umask in open() and mkdir().
2019-02-22 02:39:13 +01:00
Andreas Kling
6d3e12899b
Kernel: Pass process arguments directly on the stack.
...
Get rid of the convoluted get_arguments and get_environment syscalls.
This patch also adds a simple /bin/env that just prints its environment.
2019-02-22 01:55:22 +01:00
Andreas Kling
e969419202
Kernel: Don't allocate and discard an extra stack for every process.
2019-02-22 00:27:06 +01:00
Andreas Kling
920e8e58ed
Kernel+Userland: Implement setuid() and setgid() and add /bin/su
...
Also show setuid and setgid bits in "ls -l" output. :^)
2019-02-21 23:38:10 +01:00
Andreas Kling
8b64f213a1
Kernel: sigpending() and sigprocmask() should validate memory writes.
2019-02-21 21:33:52 +01:00
Andreas Kling
19acb2baf7
Kernel: Add file permission checks to link() syscall.
...
Also use the new name, not the old name, for the new link, duh.
2019-02-21 17:05:32 +01:00
Andreas Kling
a624fe06b8
Kernel: Add file permission checks to utime() syscall.
2019-02-21 16:37:41 +01:00
Andreas Kling
f0a869ea50
Kernel: Process::cwd_inode() should return a reference.
...
There's always a current working directory inode.
2019-02-21 16:19:07 +01:00
Andreas Kling
ce3b548077
Kernel: Separate VFS stat() from open().
...
It was very confusing that you had to open a FileDescriptor in order to stat
a file. This patch gives VFS a separate stat() function and uses it to
implement the stat() and lstat() syscalls.
2019-02-21 16:09:12 +01:00
Andreas Kling
f5f136931a
Kernel: Start adding various file system permission checks.
...
Fail with EACCES in various situations. Fix userland bugs that were exposed.
2019-02-21 15:45:31 +01:00
Andreas Kling
43075e5878
Add a simple /bin/df which gathers its info from /proc/df.
2019-02-21 14:48:00 +01:00
Andreas Kling
7d288aafb2
Kernel: Add link() syscall to create hard links.
...
This accidentally grew into a little bit of VFS cleanup as well.
Also add a simple /bin/ln implementation to exercise it.
2019-02-21 13:26:40 +01:00
Andreas Kling
0aaec6b19a
Support resizing the Terminal app.
...
I set it up so that TIOCSWINSZ on a master PTY gets forwarded to the slave.
This feels intuitively right. Terminal can then use that to inform the shell
or whoever is inside the slave that the window size has changed.
TIOCSWINSZ also triggers the generation of a SIGWINCH signal. :^)
2019-02-20 23:38:20 +01:00
Andreas Kling
e0b81ee4c9
Ext2FS: Remove the inode cache lock in favor of one big lock instead.
2019-02-20 21:58:55 +01:00
Andreas Kling
266e77259e
Kernel: If someone else zero-fills a shared VMO page, don't freak out.
...
Just map the new page and move on.
2019-02-20 21:33:07 +01:00
Andreas Kling
6158f456fa
Kernel: Don't remove from SharedBuffer map while iterating it.
...
This was causing a finalizer crash when handling a process that co-owned
multiple shared buffers.
2019-02-20 21:31:52 +01:00
Andreas Kling
59b8183c4b
WindowServer: Support resizing windows.
...
This is pretty limited and not entirely stable, but it does work! :^)
2019-02-20 15:34:55 +01:00
Andreas Kling
3df4a902df
Ext2FS: Lock a lot. Go way overkill with locking for now.
2019-02-20 13:09:59 +01:00
Andreas Kling
809ffa56d7
Kernel: Reduce code duplication in exception handlers.
2019-02-20 12:28:41 +01:00
Andreas Kling
b704d3d295
LibGUI: Add a GToolBar class that can be populated with GActions.
...
The same action can be added to both a menu and a toolbar.
Use this to put a toolbar into FileManager. This is pretty neat. :^)
2019-02-20 02:39:46 +01:00
Andreas Kling
fad69464f6
Kernel: Fix wrong calculation of current Unix timestamp.
2019-02-19 02:39:18 +01:00
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
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
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
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
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
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
459cc23441
Kernel: Remove Process::gui_client_id().
2019-02-17 09:05: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
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
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
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