Commit graph

64824 commits

Author SHA1 Message Date
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
Andreas Kling
95e0f6ad82 Fix race condition in exec().
...also hook up sys$fstat in the syscall dispatcher.
2018-11-17 00:52:29 +01:00