Commit graph

503 commits

Author SHA1 Message Date
Andreas Kling
0dd5279eb1 MM: Fix bug when mapping a region with a VMO with non-zero offset. 2018-12-29 03:35:48 +01:00
Andreas Kling
46ce47a984 Use the entry point address from the ELF header instead of looking up _start.
I love these kind of dumb gotcha moments. Turns out you can find the entry
address right there in the header. :^)
2018-12-29 03:28:55 +01:00
Andreas Kling
ab72666f48 Plug leaks in SynthFS::remove_file().
The process spawn stress test can now run forever. :^)
2018-12-28 03:09:45 +01:00
Andreas Kling
3f3535213b Fix some issues uncovered by the spawn stress test. 2018-12-26 22:02:24 +01:00
Andreas Kling
f6179ad9f9 Add slightly better kmalloc_aligned() and kfree_aligned().
Process page directories can now actually be freed. This could definitely
be implemented in a nicer, less wasteful way, but this works for now.

The spawn stress test can now run for a lot longer but eventually dies
due to kmalloc running out of memory.
2018-12-26 21:47:15 +01:00
Andreas Kling
55c722096d Process::create_user_process() shouldn't leak a process if exec() fails. 2018-12-26 21:04:27 +01:00
Andreas Kling
2f010e941c Unbreak the spawn stress test. 2018-12-26 20:57:51 +01:00
Andreas Kling
079889050e Merge lookup_ext2_inode() into Ext2FS::get_inode(). 2018-12-25 00:32:57 +01:00
Andreas Kling
6451b98ad4 Refactor FS::add_inode_to_directory() into Inode::add_child(). 2018-12-25 00:27:39 +01:00
Andreas Kling
4f142b86ec Refactor FS::write_inode() into Inode::write(). 2018-12-25 00:10:32 +01:00
Andreas Kling
b0db0e5de0 Get rid of Ext2FS::modify_link_count() in favor of Inode accessors. 2018-12-24 23:58:00 +01:00
Andreas Kling
673870563d Convert some FS methods to return RetainPtr<Inode>. 2018-12-24 23:45:09 +01:00
Andreas Kling
1e07ead119 Get rid of Ext2FS::is_directory_inode().
This was only used for assertions and will be factored out in favor of
Inode metadata checks eventually.
2018-12-24 23:38:15 +01:00
Andreas Kling
12a6963a5d Fix bug where Vnode kept its Inode alive indefinitely. 2018-12-24 23:24:49 +01:00
Andreas Kling
033a42b580 The syncd loop can just be a lambda. 2018-12-24 23:10:48 +01:00
Andreas Kling
503e32552c Move kernel symbolication code out of init.cpp and into its own KSym files.
Also use a simple array of { dword, const char* } for the KSyms and put the
whole shebang in kmalloc_eternal() memory. This was a fugly source of
kmalloc perma-frag.
2018-12-24 23:01:09 +01:00
Andreas Kling
6a9fa3e41a Let sys$sigaction() fail if called with SIGKILL or SIGSTOP. 2018-12-24 22:22:35 +01:00
Andreas Kling
7bc41532be Remove FS::read_entire_inode() in favor of Inode::read_entire(). 2018-12-21 17:45:42 +01:00
Andreas Kling
04ee693925 Get rid of FS::inode_metadata() since we use Inode::metadata() everywhere. 2018-12-21 17:32:18 +01:00
Andreas Kling
8a71303827 Get rid of FS::read_inode_bytes() and use Inode::read_bytes() everywhere. 2018-12-21 17:28:16 +01:00
Andreas Kling
951ed6692b Remove InodeIdentifier::metadata(). 2018-12-21 17:16:53 +01:00
Andreas Kling
3a0a8848fb Make syscall invocations look pleasant.
Old: Syscall::invoke(Syscall::SC_foo, (dword)arg1, (dword)arg2)
New: syscall(SC_foo, arg1, arg2)
2018-12-21 03:02:06 +01:00
Andreas Kling
36bd53b36a Add a simple /bin/more. 2018-12-21 02:42:30 +01:00
Andreas Kling
4dd50b1f6d Get rid of three test utilities that I no longer need. 2018-12-21 02:22:21 +01:00
Andreas Kling
a9f256a745 Make the Widgets/ directory build again. 2018-12-21 02:18:16 +01:00
Andreas Kling
ec1c487dcd Yet another pass of style fixes. 2018-12-21 02:10:45 +01:00
Andreas Kling
89040cdc99 Add a "syncd" kernel process that periodically calls sync(). 2018-12-20 02:41:55 +01:00
Andreas Kling
ed7ae6c02c Add sync() syscall and a /bin/sync.
It walks all the live Inode objects and flushes pending metadata changes
wherever needed.

This could be optimized by keeping a separate list of dirty Inodes,
but let's not get ahead of ourselves.
2018-12-20 00:39:29 +01:00
Andreas Kling
d0f06e5f3f Automatically call Inode::flush_metadata() before an Inode is destroyed.
Use a little template magic to have Retainable::release() call out to
T::will_be_destroyed() if such a function exists before actually calling
the destructor. This gives us full access to virtual functions in the
pre-destruction code.
2018-12-19 22:28:09 +01:00
Andreas Kling
1f44cd9dd9 Reworked Inode to have a dirty bit and subclass-implemented flush_metadata().
This way we can defer disk writes as long as we like. There's no automatic
flushing happening just yet.
2018-12-19 21:56:45 +01:00
Andreas Kling
d506c857ab Rename CoreInode to Inode.
I don't know what I was thinking here. Clearly Inode is the right name.
2018-12-19 21:18:28 +01:00
Andreas Kling
038d8641f9 Implement utime() along with a naive /bin/touch.
This synchronous approach to inodes is silly, obviously. I need to rework
it so that the in-memory CoreInode object is the canonical inode, and then
we just need a sync() that flushes pending changes to disk.
2018-12-19 21:14:55 +01:00
Andreas Kling
e03d341615 Editor: Fix build on Linux. 2018-12-09 13:48:11 +01:00
Andreas Kling
5d7ba9640c sh: Restore termios after a child process exits.
This avoids the annoying situation that occurs when a spawned process
messes with the termios and then doesn't exit cleanly.
2018-12-07 01:26:07 +01:00
Andreas Kling
829bf94de1 Fix /bin/ls usage string. 2018-12-07 01:19:39 +01:00
Andreas Kling
4f6438ec66 VirtualConsole: Support the 'A' and 'D' CSI sequences.
This makes backspace work correctly when line editing with bash-2.05b.
2018-12-07 01:19:02 +01:00
Andreas Kling
a8c7b6ce86 VirtualConsole: The rightmost column is always a default horizontal tab. 2018-12-07 00:26:12 +01:00
Andreas Kling
2850225587 VirtualConsole: Don't output the bell character. 2018-12-07 00:21:25 +01:00
Andreas Kling
87b10f6e6e Add basic support for horizontal tabs in the VirtualConsole. 2018-12-07 00:19:08 +01:00
Andreas Kling
f18c985546 Add basic 'x' and 'X' right/left deletion commands. 2018-12-06 23:59:55 +01:00
Andreas Kling
eb4bbc337f Add some more vi-like movements. 2018-12-05 02:28:29 +01:00
Andreas Kling
92ebfee050 Add vi-like 'A' command. 2018-12-05 02:11:39 +01:00
Andreas Kling
ae6c183475 Add basic "write to file" support. 2018-12-05 01:59:36 +01:00
Andreas Kling
d2bb139c46 Support inserting a newline. 2018-12-05 01:43:07 +01:00
Andreas Kling
efd5aae217 Coalesce the current line into a single chunk when moving away from it. 2018-12-04 13:39:31 +01:00
Andreas Kling
e02eca2a5e Add vi-like 'a' command. 2018-12-04 13:05:57 +01:00
Andreas Kling
b74fcd0a37 Fix inserting text in the middle of a chunk. 2018-12-04 01:56:16 +01:00
Andreas Kling
51092c5b9d Coding style fixes. 2018-12-04 01:42:16 +01:00
Andreas Kling
476df3b6f7 Add .gitignore to Editor 2018-12-04 00:42:57 +01:00
Andreas Kling
ca6847b5bb Import a simple text editor I started working on. 2018-12-04 00:27:16 +01:00