Age | Commit message (Collapse) | Author |
|
|
|
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.
|
|
|
|
(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".
|
|
|
|
|
|
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.
|
|
|
|
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! :^)
|
|
And move the unreadable detail-heavy mess to /proc/PID/vmo.
|
|
Added a /bin/mkdir that makes directories. How very neat :^)
There are various limitations because of missing functionality.
|
|
...also hook up sys$fstat in the syscall dispatcher.
|
|
|
|
This is really neat. :^)
|
|
|
|
|
|
We now respect the VINTR and VQUIT control characters in the termios.
|
|
|
|
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().
|
|
|
|
|
|
|
|
|
|
FileSystem -> FS
SyntheticFileSystem -> SynthFS
ProcFileSystem -> ProcFS
Ext2FileSystem -> Ext2FS
Ext2Inode -> Ext2FSInode
|
|
|
|
|
|
VirtualFileSystem -> VFS
VirtualFileSystem::Node -> Vnode
|
|
|
|
|
|
...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.
|
|
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.
|
|
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.
|
|
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! :^)
|
|
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.
|
|
|
|
It's now possible to do this in bash:
cat kernel.map | fgrep List
This is very cool! :^)
|
|
|
|
|
|
|
|
|
|
Another pass at getting bash-1.14.7 to build. Not that many symbols remain.
|
|
- Add sigprocmask() and sigpending().
- Forked children inherit signal dispositions and masks.
- Exec clears signal dispositions and masks.
|
|
Everyone was allocating one page at a time with allocate_physical_page().
|
|
|
|
It might be useful to pass these things around.
|
|
|
|
|
|
If there is one, put the process into a new BlockedSignal state which makes
the next scheduler iteration dispatch the signal.
|
|
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.
|
|
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.
|