Andreas Kling
88ad59bfb1
Add a simple FileSystemPath class that can canonicalize paths.
...
Also a simple StringBuilder to help him out.
2018-10-28 08:54:20 +01:00
Andreas Kling
8289a5c93c
Implement 'H' and 'J' escape sequences.
2018-10-27 23:42:20 +02:00
Andreas Kling
cc7e3519a6
Add a /bin/clear that prints the clear terminal escape sequence.
...
It doesn't work yet, but it will!
2018-10-27 17:39:08 +02:00
Andreas Kling
8f91a47aeb
Add some basic field width support to printf().
...
Use it to make "ls" output a bit better. Also sys$spawn now fails with EACCES
if the path is not a file that's executable by the current uid/gid.
2018-10-27 16:43:03 +02:00
Andreas Kling
601d0d1739
Better int hashing. This was going to bite me sooner or later.
2018-10-27 09:33:24 +02: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
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