Commit graph

55298 commits

Author SHA1 Message Date
Andreas Kling 8293a0ff36 Rework DiskDevice's read() and write() to be non-virtual wrappers.
This way subclasses only have to implement readBlock() and writeBlock().
read() and write() require that the offset and length are both divisible
by the blockSize().
2018-10-16 14:13:32 +02:00
Andreas Kling cafb5b2ad6 Fixup small.fs again. 2018-10-16 14:00:44 +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 9cd0a34b5c BlockDevice -> DiskDevice.
BlockDevice was the wrong name for this abstraction, since a block device
is a type of file in a unix system, and we should use that name for that
concept in the fs implementation.
2018-10-16 11:21:49 +02:00
Andreas Kling 72bb80a9ae These changes were lying around uncommitted in the old repo.
I'm just gonna commit them without too much thinking and then take
it from there.
2018-10-16 11:06:35 +02:00
Andreas Kling 87d41bdca4 If an interrupt comes from the slave PIC, both PICs need an EOI. 2018-10-16 11:05:29 +02:00
Andreas Kling 9396108034 Import the "gerbert" kernel I worked on earlier this year.
It's a lot crappier than I remembered it. It's gonna need a lot of work.
2018-10-16 11:02:00 +02:00
Andreas Kling f608629704 Implement creating a new directory. 2018-10-16 00:35:03 +02:00
Andreas Kling 5c50d02c2e Fix bug where allocating a new inode forgot that inodes are 1-based. 2018-10-15 02:42:24 +02:00
Andreas Kling b0eaca436c "stat" command should print st_mode in octal. 2018-10-15 02:12:09 +02:00
Andreas Kling 47fc6344ac Support the ext2 directory entry file_type field. 2018-10-15 01:57:57 +02:00
Andreas Kling e7901476d3 Bring back the intentionally broken symlink I had for testing. 2018-10-15 01:00:01 +02:00
Andreas Kling 05b088ee2f Add a simple /dev/random. 2018-10-15 00:44:54 +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 0286b5ea48 Add a "stat" command to test FileHandle::stat(). 2018-10-14 23:39:11 +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 c6d6ba7512 Minor errno fixups. 2018-10-14 22:16:28 +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 c94044a04a Work on POSIX-like read() and lseek() support. 2018-10-14 21:19:27 +02:00
Andreas Kling 9f9b4a2382 Add a simple /dev/full. 2018-10-14 13:16:09 +02:00
Andreas Kling fc1facf5c0 Let widget have a font() instead of using Font::defaultFont() everywhere. 2018-10-14 13:06:05 +02:00
Andreas Kling e5acbca0e8 Disable the "create /empty" test path for now. 2018-10-14 03:02:28 +02:00
Andreas Kling 93556d6743 Add basic character device support. Start with null and zero. 2018-10-14 03:01:32 +02:00
Andreas Kling fa3b11ac64 Parse out major/minor device from character and block device inodes. 2018-10-14 02:24:12 +02:00
Andreas Kling 03a0dc0103 Add a /dev/zero to the small.fs image. 2018-10-14 02:09:34 +02:00
Andreas Kling 959a1b0750 Close the MsgBox when clicking the OK button.
This feels vaguely crashy. I haven't tested window/widget destruction
before so there's sure to be bugs.
2018-10-14 01:23:01 +02:00
Andreas Kling 3ebea05996 Add a simple MsgBox() :^) 2018-10-14 00:21:42 +02:00
Andreas Kling e9e7f7a714 Improve TextBox text placement a little bit. 2018-10-13 23:23:11 +02:00
Andreas Kling d305c316e1 Add TextBox::onReturnPressed. 2018-10-13 23:19:44 +02:00
Andreas Kling 7a0a7abc52 Try out a signal-like system like this:
auto* b = new Button;
b->onClick = [] (Button&) {
    printf("The button was clicked!\n");
};
2018-10-13 23:01:06 +02:00
Andreas Kling a3fb19fe9c Use fooEvent() type names for the virtual event handlers. 2018-10-13 22:51:50 +02:00
Andreas Kling dfb70ed234 Start working on a simple TextBox widget. 2018-10-13 22:46:34 +02:00
Andreas Kling 6f1b384cde More work on focus.
ListBox now renders differently depending on focus state.
2018-10-13 20:59:25 +02:00
Andreas Kling 1929cb6b71 Implement basic focus. 2018-10-13 17:52:47 +02:00
Andreas Kling 44a32039be Let the WindowManager track the active window.
We draw the active window in a different color, obviously. :^)
2018-10-13 17:42:43 +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 16fff6dff7 Add a root .gitignore. 2018-10-13 17:00:27 +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 6ea8ce500c Use HashMap::remove() in some places that I wanted it. 2018-10-13 14:26:37 +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 9a387d96da Use Vector::remove() in a place I wished I had it earlier. 2018-10-13 01:19:25 +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