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
53abfa7ea1
Add sys$gethostname and /bin/hostname
2018-10-26 09:54:29 +02:00
Andreas Kling
fdc782c1d1
Add a very naive block cache to the DiskBackedFileSystem.
...
This would be a lot better as an LRU. Right now it's a 32-slot
hash table with random eviction.
2018-10-25 12:36:50 +02:00
Andreas Kling
16f318408d
ELFLoader should fail with an error message for unresolved symbols.
2018-10-25 10:02:04 +02:00
Andreas Kling
ec1d16b307
Add a "pwd" utility to userland.
...
It's implemented as a separate process. How cute is that.
Tasks now have a current working directory. Spawned tasks inherit their
parent task's working directory.
Currently everyone just uses "/" as there's no way to chdir().
2018-10-24 14:28:22 +02:00
Andreas Kling
bca4b71bfa
Lots of hacking to make a very simple "ls" utility.
...
I added a dead-simple malloc that only allows allocations < 4096 bytes.
It just forwards the request to mmap() every time.
I also added simplified versions of opendir() and readdir().
2018-10-24 12:50:07 +02:00
Andreas Kling
82dae8fc90
Add a kmalloc lock. This definitely reduces flakiness.
2018-10-24 00:51:19 +02:00
Andreas Kling
018da1be11
Generalize the SpinLock and move it to AK.
...
Add a separate lock to protect the VFS. I think this might be a good idea.
I'm not sure it's a good approach though. I'll fiddle with it as I go along.
It's really fun to figure out all these things on my own.
2018-10-23 23:34:05 +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
fe237ee215
Lots of hacking:
...
- Turn Keyboard into a CharacterDevice (85,1) at /dev/keyboard.
- Implement MM::unmapRegionsForTask() and MM::unmapRegion()
- Save SS correctly on interrupt.
- Add a simple Spawn syscall for launching another process.
- Move a bunch of IO syscall debug output behind DEBUG_IO.
- Have ASSERT do a "cli" immediately when failing.
This makes the output look proper every time.
- Implement a bunch of syscalls in LibC.
- Add a simple shell ("sh"). All it can do now is read a line
of text from /dev/keyboard and then try launching the specified
executable by calling spawn().
There are definitely bugs in here, but we're moving on forward.
2018-10-23 10:12:50 +02:00
Andreas Kling
c8b7173aa8
Add a CircularQueue template class to AK.
2018-10-22 22:46:02 +02:00
Andreas Kling
b824f15619
Launching an arbitrary ELF executable from disk works! :^)
...
This is so cool! It's a bit messy now with two Task constructors,
but eventually they should fold into a single constructor somehow.
2018-10-22 15:43:02 +02:00
Andreas Kling
63764b3a65
Import very modest Userland.
2018-10-22 14:06:22 +02:00
Andreas Kling
85bcf2ed0f
Add getgid() and getpid() syscalls. Prep for LibC.
2018-10-22 13:55:11 +02:00
Andreas Kling
702d308e67
Oops, StringImpl's "the empty string" global was not always initialized.
...
These "oops forgot to initialize" bugs are getting annoying...
2018-10-22 13:10:08 +02:00
Andreas Kling
c149d2a8f0
Build ELFLoader into Kernel.
2018-10-18 15:03:10 +02:00
Andreas Kling
347e202f7f
Add size_t and ssize_t to kernel builds.
2018-10-17 16:47:19 +02:00
Andreas Kling
7580ac576f
Make VFS host build work again.
2018-10-17 12:23:19 +02:00
Andreas Kling
d2425495ca
VirtualFileSystem class builds inside Kernel.
2018-10-17 11:40:58 +02:00
Andreas Kling
9171521752
Integrate ext2 from VFS into Kernel.
2018-10-17 10:57:23 +02:00
Andreas Kling
aec8ab0a60
Add the basic character devices to kernel.
2018-10-16 14:33:16 +02:00
Andreas Kling
5d465582a3
Start fixing up AK to work inside the kernel.
2018-10-16 13:59:28 +02:00
Andreas Kling
1203c327c7
Merge some features from gerbert into OwnPtr and RetainPtr.
2018-10-16 12:21:06 +02:00
Andreas Kling
fd708a4cb1
Reduce dependence on STL.
2018-10-16 12:11:27 +02:00
Andreas Kling
0c1a4e8de3
Add String::substring().
2018-10-16 12:07:17 +02:00
Andreas Kling
39444c5916
Fix HashTable::find() return iterator for items found in non-0 buckets.
2018-10-14 22:08:36 +02:00
Andreas Kling
560405667e
Start using WeakPtr for some of the WindowManager window pointers.
2018-10-13 17:00:45 +02:00
Andreas Kling
3e9a45d7f4
Add WeakPtr/Weakable templates.
2018-10-13 15:41:24 +02:00
Andreas Kling
b7efd92937
Make SinglyLinkedList destruction actually work.
2018-10-13 14:29:00 +02:00
Andreas Kling
969334505d
Add HashMap::remove().
2018-10-13 14:23:47 +02:00
Andreas Kling
c2ef54c044
Add HashTable::remove() and fix a bug where ConstIterator would skip the first.
2018-10-13 14:22:09 +02:00
Andreas Kling
f794190de0
Add a DoublyLinkedList template and start using it for HashTable.
2018-10-13 13:50:44 +02:00
Andreas Kling
7777c8844b
Add Vector::remove().
2018-10-13 01:17:36 +02:00
Andreas Kling
750b27cb07
Ext2FileSystem::readInode() should return an empty buffer for 0-length files.
2018-10-13 00:50:35 +02:00
Andreas Kling
c37ded0ae4
Support arbitrary pointer traits.
2018-10-11 16:52:30 +02:00
Andreas Kling
f282df6617
AK::Buffer should not free unowned backing stores, duh.
2018-10-11 12:30:35 +02:00
Andreas Kling
a181a8f6e7
Run without SimpleMalloc locally for now.
2018-10-10 15:11:43 +02:00
Andreas Kling
5a30055157
Import all this stuff into a single repo called Serenity.
2018-10-10 11:53:07 +02:00