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