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
Andreas Kling
f6e27c2abe
More coding style changes.
2018-12-03 00:39:25 +01:00
Andreas Kling
d824442e3e
Get rid of deprecated_enumerateDirectoryInode.
...
This was a vestige from the pre-CoreInode implementation of Ext2FS.
2018-12-03 00:26:39 +01:00
Andreas Kling
407bb3e76e
Some coding style fixes. I'm getting more comfortable with this style.
2018-12-03 00:20:00 +01:00
Andreas Kling
7d13432b55
Remove debug kprintfs() in VFS::mkdir.
2018-12-03 00:11:16 +01:00
Andreas Kling
fb8a1186f6
Use decltype(sizeof(void*)) as a facsimile for std::size_t.
...
Clang demands that the size argument to the various operator new()'s
to be exactly whatever it thinks std::size_t is.
Since we can't include STL headers, this little trick will do.
2018-12-02 23:48:19 +01:00
Andreas Kling
dd502bb54e
Make the widgets code build on macOS.
...
Funny, I haven't looked at this code in a few weeks and there's so much to change!
2018-12-02 23:41:10 +01:00
Andreas Kling
85b886c2e0
Make it possible to build the Kernel on a macOS host.
...
It still requires an ELF compiler and linker, but at least it builds.
I need to get rid of the "Unix" namespace. This does a lot of that.
2018-12-02 23:34:50 +01:00
Andreas Kling
44036f32bc
Move ELFLoader code into Kernel/.
2018-12-02 20:27:08 +01:00
Andreas Kling
ac7a60225e
Add TIOCGWINSZ ioctl so userland can determine terminal geometry.
...
(Don't) use this to implement short-form output in ls.
I'm too tired to make a nice column formatting algorithm.
I just wanted something concise when I type "ls".
2018-11-29 03:45:23 +01:00
Andreas Kling
f5a83c4d8a
Fix bug where a signal-interrupted waitpid() wouldn't return EINTR.
2018-11-28 23:30:49 +01:00
Andreas Kling
464a16afa2
Implement signal() via sigaction() and get rid of sys$signal().
2018-11-28 22:27:32 +01:00