Andreas Kling
f6e27c2abe
More coding style changes.
2018-12-03 00:39:25 +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
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
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
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
c735c56e4c
More work on CoreInode.
2018-11-13 23:44:54 +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
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
abdf24cb73
Fix deadlock in synthfs read implementation.
...
Not cool disabling interrupts and then calling out to arbitrary code.
2018-11-08 16:07:45 +01:00
Andreas Kling
981a3ae4b3
Make VFS test environment build again.
2018-11-07 12:05:51 +01:00
Andreas Kling
83172e6a4b
Rename FileHandle to FileDescriptor.
2018-11-07 11:37:54 +01:00
Andreas Kling
dec5683e9c
Snazz up the kprintf() output a bit by giving it its own color.
2018-10-31 20:14:23 +01:00
Andreas Kling
b1ff62f605
Okay let's just not have this broken locking at all right now.
...
I think I should just protect access to shared data structures
and eventually do read/write atomicity locks at the inode level.
2018-10-29 22:43:39 +01:00
Andreas Kling
e6284a8774
Fix broken SpinLock.
...
The SpinLock was all backwards and didn't actually work. Fixing it exposed
how wrong most of the locking here is.
I need to come up with a better granularity here.
2018-10-29 22:04:26 +01:00
Andreas Kling
97726862dd
Add basic symlink support.
...
- sys$readlink + readlink()
- Add a /proc/PID/exe symlink to the process's executable.
- Print symlink contents in ls output.
- Some work on plumbing options into VFS::open().
2018-10-28 14:11:51 +01:00
Andreas Kling
1d4af51250
Add a VFS::absolutePath(InodeIdentifier).
...
This is pretty inefficient for ext2fs. We walk the entire block group
containing the inode, searching through every directory for an entry
referencing this inode.
It might be a good idea to cache this information somehow. I'm not sure
how often we'll be searching for it.
Obviously there are multiple caching layers missing in the file system.
2018-10-28 12:20:25 +01:00
Andreas Kling
2716a9e2d7
Greatly improve /proc/PID/stack by tracing the ebp frame chain.
...
I also added a generator cache to FileHandle. This way, multiple
reads to a generated file (i.e in a synthfs) can transparently
handle multiple calls to read() without the contents changing
between calls.
The cache is discarded at EOF (or when the FileHandle is destroyed.)
2018-10-27 00:14:24 +02:00
Andreas Kling
c928b06218
Add a very hackish /proc/PID/stack.
...
It walks the stack and identifies anything that looks like a kernel symbol.
This could be a lot more sophisticated.
2018-10-26 22:33:15 +02:00
Andreas Kling
a32b3a3ddf
Implement /proc/PID/vm.
...
Refactored SyntheticFileSystem to maintain an arbitrary directory structure.
ProcFileSystem creates a directory entry in /proc for each new process.
2018-10-26 17:44:19 +02:00
Andreas Kling
57136ad87e
synthfs: generated files should have size=0.
...
This way we don't need to generate the file just to see how big it would get.
2018-10-24 00:50:23 +02:00
Andreas Kling
ed2422d7af
Start adding a basic /proc filesystem and a "ps" utility.
2018-10-23 12:04:03 +02:00
Andreas Kling
9171521752
Integrate ext2 from VFS into Kernel.
2018-10-17 10:57:23 +02:00
Andreas Kling
f608629704
Implement creating a new directory.
2018-10-16 00:35:03 +02:00
Andreas Kling
9528edab92
Move readEntireInode() up to FileSystem (from ext2.)
...
It's just a wrapper around multiple calls to readInodeBytes() now.
2018-10-15 00:16:14 +02:00
Andreas Kling
c7c957966a
Implement SyntheticFileSystem::readInodeBytes().
2018-10-14 23:13:45 +02:00
Andreas Kling
1f41a36c52
Add a Unix namespace for foo_t types.
...
This allows me to keep prototyping things on a random desktop machine,
even if that machine has its own ideas about foo_t types.
2018-10-14 22:57:57 +02:00
Andreas Kling
c94044a04a
Work on POSIX-like read() and lseek() support.
2018-10-14 21:19:27 +02:00
Andreas Kling
5a30055157
Import all this stuff into a single repo called Serenity.
2018-10-10 11:53:07 +02:00