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
Andreas Kling
d90104f9e0
Let reap() communicate the dead process's exit status to the caller.
...
This way the scheduler doesn't need to plumb the exit status into the waiter.
We still plumb the waitee pid though, I don't love it but it can be fixed.
2018-11-28 22:01:24 +01:00
Andreas Kling
938d1b8bfb
Drop any old signal stacks on exec().
2018-11-28 20:59:10 +01:00
Andreas Kling
629c5be10b
Add basic zero faults.
...
mmap() will now map uncommitted pages that get allocated and zeroed upon the
first access. I also made /proc/PID/vm show number of "committed" bytes in
each region. This is so cool! :^)
2018-11-19 02:17:20 +01:00
Andreas Kling
e88f306d07
Make /proc/PID/vm more readable.
...
And move the unreadable detail-heavy mess to /proc/PID/vmo.
2018-11-19 01:49:19 +01:00
Andreas Kling
526dcafd57
Some improvements to LibC malloc().
2018-11-19 01:40:19 +01:00
Andreas Kling
85649077cd
Adapt kmalloc() for userspace.
...
A slightly more useful malloc() for userspace. The max allocation limit
is still 128 kB, but at least now free() is able to recycle memory.
2018-11-19 00:53:02 +01:00
Andreas Kling
f5a0b6961c
Fix mkdir with relative paths.
2018-11-18 23:28:43 +01:00
Andreas Kling
de4604ac95
Finally hook up the mkdir code to a syscall.
...
Added a /bin/mkdir that makes directories. How very neat :^)
There are various limitations because of missing functionality.
2018-11-18 15:02:16 +01:00
Andreas Kling
303577df16
Various stubs while trying to get an old coreutils to build.
2018-11-17 15:56:09 +01:00
Andreas Kling
e440c3fa87
Support "ls <path>" rather than just "ls" :^)
2018-11-17 01:04:00 +01:00