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
Andreas Kling
bb9766ee17
Tweak default hostname.
2018-11-17 00:23:39 +01:00
Andreas Kling
9d05f6b7a7
Make bash-2.05b build with minimal changes.
...
This is really neat. :^)
2018-11-17 00:14:07 +01:00
Andreas Kling
2cf477a151
Add fcntl() F_DUPFD which is slightly different from dup2().
2018-11-16 22:14:40 +01:00
Andreas Kling
6cedb88153
Don't unblock a blocked process when it ignores a signal.
2018-11-16 21:14:25 +01:00
Andreas Kling
a788e85c09
Refactor TTY signal generation a bit.
...
We now respect the VINTR and VQUIT control characters in the termios.
2018-11-16 20:18:58 +01:00
Andreas Kling
4e2c2b9748
Minor TTY tweak.
2018-11-16 18:12:22 +01:00
Andreas Kling
d2046e79cf
Add a DoubleBuffer thingy to allow TTY read/write to be interleaved.
...
I feel like this concept might be useful in more places. It's very naive
right now and uses dynamically growing buffers. It should really use static
size buffers and never kmalloc().
2018-11-16 17:57:00 +01:00
Andreas Kling
52d1822c3c
Add templated helpers for read/write validation, and one for strings, too.
2018-11-16 16:26:20 +01:00
Andreas Kling
8a286b9244
Improve syscall address validation a bit.
2018-11-16 16:10:59 +01:00
Andreas Kling
084287ca45
Reimplement tcsetattr/tcgetattr as ioctls.
2018-11-16 15:41:48 +01:00
Andreas Kling
c99f8af66d
Add ioctl() and reimplement tcsetpgrp/tcsetpgrp as ioctls.
2018-11-16 13:13:50 +01:00
Andreas Kling
2529925fe9
Some more renaming:
...
FileSystem -> FS
SyntheticFileSystem -> SynthFS
ProcFileSystem -> ProcFS
Ext2FileSystem -> Ext2FS
Ext2Inode -> Ext2FSInode
2018-11-15 17:13:10 +01:00
Andreas Kling
eced5f11e3
Add CoreInode::reverse_lookup().
...
Getting the absolute path of an ext2fs inode now uses the lookup cache
which makes it a lot faster.
2018-11-15 17:04:55 +01:00
Andreas Kling
5f434bc00b
Add CoreInode::lookup() for directory lookups.
...
Also add a name-to-inode lookup cache to Ext2Inode. This seems like a great
speedup for filesystem traversal.
2018-11-15 16:38:43 +01:00
Andreas Kling
8fa2d7104a
More VFS cleanup.
2018-11-15 16:04:25 +01:00
Andreas Kling
396a32835b
A pass of style/naming cleanup in VFS.
2018-11-15 15:10:30 +01:00
Andreas Kling
457a5df7d5
Rename:
...
VirtualFileSystem -> VFS
VirtualFileSystem::Node -> Vnode
2018-11-15 14:43:10 +01:00
Andreas Kling
c735c56e4c
More work on CoreInode.
2018-11-13 23:44:54 +01:00
Andreas Kling
26852a8363
Add metadata to CoreInode.
2018-11-13 13:32:16 +01:00
Andreas Kling
10c470e95f
Make page_in_from_vnode 2x faster.
...
...by adding a new class called Ext2Inode that inherits CoreInode.
The idea is that a vnode will wrap a CoreInode rather than InodeIdentifier.
Each CoreInode subclass can keep whatever caches they like.
Right now, Ext2Inode caches the list of block indices since it can be very
expensive to retrieve.
2018-11-13 13:02:39 +01:00
Andreas Kling
97c799576a
Add close-on-exec flag for file descriptors.
...
I was surprised to find that dup()'ed fds don't share the close-on-exec flag.
That means it has to be stored separately from the FileDescriptor object.
2018-11-13 01:36:31 +01:00
Andreas Kling
19b9401487
Reduce kmalloc() traffic in directory iteration.
...
Pass the file name in a stack-allocated buffer instead of using an AK::String
when iterating directories. This dramatically reduces the amount of cycles
spent traversing the filesystem.
2018-11-13 00:17:30 +01:00
Andreas Kling
5e8e554f94
Add a braindead 10x speedup to kmalloc().
...
Skip over entirely full buckets when scanning for a big-enough memory slot.
This means I can postpone writing a better kmalloc() for a while longer! :^)
2018-11-12 15:29:46 +01:00
Andreas Kling
dea474dfd5
Make loading /bin/bash ~250x faster.
...
The ELF loader was doing huge amounts of unnecessary work.
Got rid of the "export symbols" and relocation passes since we don't need them.
They were useful things when bringing up the ELF loading code.
Also added a simple TSC-based Stopwatch RAII thingy to help debug performance issues.
2018-11-12 13:45:15 +01:00
Andreas Kling
1cf20a2fe2
Some minor termios debugging output.
2018-11-12 12:27:28 +01:00
Andreas Kling
f1404aa948
Add primitive FIFO and hook it up to sys$pipe().
...
It's now possible to do this in bash:
cat kernel.map | fgrep List
This is very cool! :^)
2018-11-12 01:28:46 +01:00
Andreas Kling
18e3ddf605
Add a naive /bin/fgrep for testing pipes.
2018-11-11 20:42:41 +01:00
Andreas Kling
d5d45d1088
Rage hacking to get bash to run. It finally runs. So cool! :^)
2018-11-11 15:38:07 +01:00
Andreas Kling
9b70808ab5
Add really cheap atol() since sizeof(int) == sizeof(long) here anyway.
2018-11-11 10:40:50 +01:00
Andreas Kling
f394e3486a
Stub out a bunch more functions to get closer to that sweet bash build.
2018-11-11 10:38:33 +01:00
Andreas Kling
e48182d91b
Add setvbuf(), setlinebuf(), setbuf().
2018-11-11 10:11:09 +01:00
Andreas Kling
7cc4caee4f
Add ispunct() to LibC + some minor cleanups.
2018-11-11 00:44:04 +01:00
Andreas Kling
3b2f172d48
A bunch of compat work (mostly stubs but some real implementations, too.)
...
Another pass at getting bash-1.14.7 to build. Not that many symbols remain.
2018-11-11 00:20:53 +01:00
Andreas Kling
6a0a2c9ab4
Some improvements to signals.
...
- Add sigprocmask() and sigpending().
- Forked children inherit signal dispositions and masks.
- Exec clears signal dispositions and masks.
2018-11-10 23:30:41 +01:00
Andreas Kling
c97a5862ce
Remove MM::allocate_physical_pages() since it wasn't used.
...
Everyone was allocating one page at a time with allocate_physical_page().
2018-11-10 22:14:41 +01:00
Andreas Kling
36b3dc6c32
Add /proc/PID/cwd, a symlink to the process's current directory.
2018-11-10 18:16:21 +01:00
Andreas Kling
a768c2b919
Rename ProcessInspectionScope to ProcessInspectionHandle.
...
It might be useful to pass these things around.
2018-11-10 16:50:42 +01:00
Andreas Kling
2ac5e14c08
Merge VGA into VirtualConsole.
2018-11-10 16:26:18 +01:00
Andreas Kling
c653bb09b3
Don't include empty segments in canonicalized paths.
...
This makes "/foo/" and "/foo" both resolve to "/foo".
2018-11-10 15:46:39 +01:00
Andreas Kling
39d6b96d21
Make chdir("/") work.
...
It surprisingly wasn't possible to resolve the path "/".
2018-11-10 15:40:24 +01:00
Andreas Kling
b8264e7d47
Merge Disk namespace into the IDEDiskDevice class.
2018-11-10 15:15:31 +01:00
Andreas Kling
cba05ce75e
Before sys$write returns, check for pending unmasked signals.
...
If there is one, put the process into a new BlockedSignal state which makes
the next scheduler iteration dispatch the signal.
2018-11-10 02:43:33 +01:00
Andreas Kling
8605711f4b
Make /bin/clear work again.
...
After I made stdio buffered, we were dropping anything unflushed on exit.
Since /bin/clear just prints out some escape sequences without a newline,
the entire buffer was being discarded.
Also add VirtualConsole::clear() that handles clearing of background VC's.
2018-11-10 00:56:10 +01:00
Andreas Kling
3e3de67f02
Use the VGA start address for fast VirtualConsole scrolling.
...
Instead of memcpy'ing the entire screen every time we press enter at the
bottom, use the VGA start address register to make a "view" onto the
underlying memory that moves downward as we scroll.
Eventually we run out of memory and have to reset to the start of the
buffer. That's when we memcpy everything. It would be cool if there was
some way to get the hardware to act like a ring buffer with automatic
wrapping here but I don't know how to do that.
2018-11-09 21:18:03 +01:00
Andreas Kling
8a865c11ec
Pre-size the ksyms vector for speedier loading.
...
Also show loading progress on the screen because it looks neat.
2018-11-09 20:40:39 +01:00