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
Andreas Kling
405383fd2f
Refactor the FIFO implementation to use a DoubleBuffer as backing store.
...
This is considerably more efficient than using a CircularQueue.
2018-12-03 02:24:11 +01:00
Andreas Kling
afc56d151f
Omit duplicate lines from the ksyms map.
2018-12-03 02:23:49 +01:00
Andreas Kling
bbfae19238
Move DoubleBuffer to its own files.
2018-12-03 01:51:44 +01:00
Andreas Kling
aff89d2fd7
Yet more coding style fixes.
2018-12-03 01:38:22 +01:00
Andreas Kling
f31e1ceab0
Move InlineLinkedList to AK.
2018-12-03 01:18:54 +01:00
Andreas Kling
e7cc08226f
Implement basic support for times().
...
The kernel now bills processes for time spent in kernelspace and userspace
separately. The accounting is forwarded to the parent process in reap().
This makes the "time" builtin in bash work.
2018-12-03 01:14:19 +01:00
Andreas Kling
4bc87dc7b9
Share the "blocked-on file descriptor" number between read() and write().
...
A process can't be reading and writing at the same time, so it's fine for
them to share the variable for the blocked FD.
2018-12-03 00:42:48 +01:00