Bananymous
0deab1be51
Kernel: Remove bitmap debug printing from ext2 inode allocation
2023-09-06 01:25:09 +03:00
Bananymous
5a623adaa6
Kernel: Correct inode links count
2023-09-05 14:46:56 +03:00
Bananymous
ddd36af0f1
Kernel: Add /dev/tty symlink that targets the current tty
2023-09-05 01:07:52 +03:00
Bananymous
35fd30ee29
Kernel: Implement basic RamSymlinkInode
2023-09-05 01:07:52 +03:00
Bananymous
55714b90cd
Kernel: Rework whole Terminal structure
...
Serial monitors can now be used as a output. This requires editing
init code for the stdio opening. Serial input is not supported, so qemu
still needs graphical window for ps/2 keyboard.
2023-09-04 19:34:18 +03:00
Bananymous
7933265095
Kernel: Split ext2 implementation to multiple files
2023-09-01 15:10:23 +03:00
Bananymous
d810644018
Kernel: Start work on writable ext2 filesystem
2023-08-31 23:40:31 +03:00
Bananymous
8c282a5d83
Kernel: O_SEARCH doesn't require any permissions
...
Except read permissions for all directories in the path
This allows us to stat e.g. device files for which we don't have
the permissions.
2023-08-11 12:26:07 +03:00
Bananymous
e74fdbc55b
Kernel: Remove get_unix_timestamp from SystemTimer
...
Kernel now uses the percise real_time() and time_since_boot()
2023-08-09 08:57:50 +03:00
Bananymous
bc0e1fa898
Kernel: Rename TimerHandler to SystemTimer
...
I changed SystemTimer to only handle the "best" supported timer
it can initialize.
2023-08-04 16:06:47 +03:00
Bananymous
9363c1cdaf
Kernel: Move RTC to Timer directory
...
PIT ms counter seems to be off by multiple seconds/minute. I will
be probably changing to HPET for system time
2023-08-04 11:12:16 +03:00
Bananymous
198e6d7cf6
Kernel: Start work on abstracting Timers
2023-08-04 10:29:42 +03:00
Bananymous
f8a1a10897
Kernel: add NullDevice to /dev/null
2023-07-20 00:06:22 +03:00
Bananymous
72041a52e8
Kernel: Ext2Inode::create_file actually sets the inode data
...
We used to just create inode without touching its memory.
2023-07-13 10:20:56 +03:00
Bananymous
74c79c7eff
Kernel: Rewrite whole device structure
...
We now have DevFileSystem which is derived from RamFileSystem. All
devices are RamInodes. We don't have separate DeviceManager anymore.
To iterate over devices, you can loop througn every inode in devfs.
2023-07-10 23:17:14 +03:00
Bananymous
5a5656b2d3
Kenrel: RamInode now implements truncate()
2023-07-10 16:07:09 +03:00
Bananymous
1e173c178d
Kernel: Ext2 fill now return ENOTSUP on write
...
We used to crash the kernel
2023-07-10 15:34:25 +03:00
Bananymous
45789fda08
Kernel: You can now read/write to RamInodes
...
RamFS should be stored on physical pages and not in kmalloc, but
that will be implemented later :)
2023-07-10 14:09:35 +03:00
Bananymous
3b5bc63d1b
Kernel: Inode::create_file() now takes uid and gid as parameters
2023-07-10 13:32:10 +03:00
Bananymous
f1089e2b8a
Kernel: start work on ram file system
2023-07-10 13:26:14 +03:00
Bananymous
583504ebe0
Kernel: Inode rename directory functions
2023-07-10 11:48:11 +03:00
Bananymous
4eb95c963d
Kernel/LibC: Add basic pipe() syscall and command
...
You can now create pipes :)
2023-07-06 22:16:26 +03:00
Bananymous
ef4ebaa969
Kernel: Add syscalls for set{,e,re}{uid,gid}
2023-06-11 22:37:00 +03:00
Bananymous
c62e820bcf
Kernel: Add basic Credentials for the system
...
Now filesystem access/open, etc confirm that you have access for rwxs
2023-06-11 20:06:06 +03:00
Bananymous
e209ca7c82
Kernel: Rewrite directory listing so it can be integrated to libc
2023-06-11 00:17:18 +03:00
Bananymous
a4cb5d8360
Kernel: Inode/Device detection is done with overridden bool functions
2023-06-03 13:28:15 +03:00
Bananymous
633cb4f282
Kernel: VFS now has max link depth of 100
2023-06-02 12:50:40 +03:00
Bananymous
4d4d0e26a9
Kernel: Symlinks are now working
...
We still have to implement loop or depth detection
2023-06-02 11:43:46 +03:00
Bananymous
232fdcb82c
Kernel: add basic support for symlinks
2023-06-01 00:24:45 +03:00
Bananymous
8d6db168d6
Kernel: remove message from BAN::Error
...
We don't store the error message anymore in BAN::Error.
Instead we store a error code that can be mapped into a string.
This allows BAN::Error to only take 4 bytes instead of 128.
We should also make some kernel initialization just panic instead
of returning errors since they are required for succesfull boot
anyway.
2023-04-11 23:25:21 +03:00
Bananymous
461a5774f8
Kernel: Device dev and rdev number is done more properly
...
Also hd* partitions are now 1 indexed instead of 0
2023-04-03 11:43:16 +03:00
Bananymous
79090c2648
Kernel: cleanup includes
...
I went quickly went through all files since I found some weird
includes :D
2023-04-01 02:14:49 +03:00
Bananymous
7a6b1c8e47
Kernel: Fix traversing back from mount points
2023-04-01 01:54:35 +03:00
Bananymous
5da801d12b
Kernel: fix ext2 failed creation memory leak
2023-04-01 00:22:03 +03:00
Bananymous
26d9a3e253
Kernel: Move DeviceManager to its own file
2023-03-30 22:39:45 +03:00
Bananymous
eef3631a5a
Kernel: Improve locking in Process, VFS and ATAController
...
We used to block on all process access. This meant that shell
reading the keyboard input would block all VFS access making disk
accesses practically impossible. We now block only when it is
necessary :)
2023-03-30 22:02:16 +03:00
Bananymous
2995a36942
Kernel: root partition is now passed from the commandline
2023-03-30 18:46:19 +03:00
Bananymous
3e8ab8271d
Kernel: Shell can now mount partitions
2023-03-30 15:06:41 +03:00
Bananymous
5b3a00c64f
Kernel: Inode::Mode is now a struct so we can have functions in it
2023-03-30 14:41:15 +03:00
Bananymous
0ce9fd8597
Kernel: StorageDevices and Controllers are now devices
2023-03-30 14:22:15 +03:00
Bananymous
5d5487315f
Kernel: Remove the mount test from VFS
2023-03-30 11:43:24 +03:00
Bananymous
06ce1f0667
Kernel: Rewrite mounting code
2023-03-29 21:34:48 +03:00
Bananymous
1fb8c211f0
Kernel: Move Partition out of StorageDevice and rename functions
2023-03-29 13:23:01 +03:00
Bananymous
a24c2d9be2
Kernel: DeviceManager is now a 'FileSystem' so it can expose devices
...
Shell reads keyboard through /dev/input :)
2023-03-29 11:50:46 +03:00
Bananymous
f8a2c60c8d
Kernel/BAN: move unix time conversion to BAN and add stat to Shell
2023-03-27 00:49:58 +03:00
Bananymous
770f7716a0
Kernel: Rework processes and VFS so we don't expose inodes
...
Everything is now done through a file descriptor.
2023-03-26 04:30:57 +03:00
Bananymous
7d2ab53baa
Kernel: Ext2FS now does allocations better
...
We only have to allocate at the beginning of the all functions and
can properly exit before any disk reads if we run out of memory.
This makes development little bit 'harder' since the {read,write}_block
user must allocate a buffer of atleast block_size bytes.
I also made disk access to cause kernel panic on error since the error
handling during file write is something I don't want to think now.
The filesystem can easily corrupt so, I feel like when disk io starts
to fail I'll come back to this.
2023-03-23 23:22:31 +02:00
Bananymous
2152b8b95f
Kernel: Add possibiliity to create empty files on Ext2
...
Big rewrite for Ext2 for more easy and optimized code
2023-03-23 22:26:06 +02:00
Bananymous
4fd21bc303
Kernel: Remove block group descriptor cache from ext2fs
...
This will make improving the fs easier since we need to only update
the values on the disk
2023-03-23 18:52:58 +02:00
Bananymous
6ed9651176
Kernel: StorageDevice and Ext2 "support" writing
2023-03-23 13:04:13 +02:00
Bananymous
a8e3ee6f19
Kernel: Ext2 directory functions now fail on invalid blocks
...
Invalid blocks should only happen while writing to a file and
I think in that case we should just bail out instead of giving
you incomlete inode list or search result.
2023-03-22 01:55:57 +02:00
Bananymous
9b500842a0
Kernel: Ext2 can now read from non-block-size aligned offsets
2023-03-21 19:19:17 +02:00
Bananymous
b21348379f
Kernel: Remove obsolete Ext2FS::ext2_root_inode()
...
This was not used by anyone and the cast was wrong anyway
2023-03-21 18:19:48 +02:00
Bananymous
633055293e
Kernel: Remove for_each_block from Ext2
2023-03-21 18:14:02 +02:00
Bananymous
39b560fde3
Kernel: Add basic mounting to VFS.
2023-03-19 05:51:25 +02:00
Bananymous
76d5364a55
Kernel: Add comparison operator for inodes
2023-03-19 03:34:23 +02:00
Bananymous
8236598f9d
Kernel: Optimize Ext2 disk reads
...
We used to read whole file until we reached the asked offset.
Now we can calculate the appropriate block and read just the asked data.
2023-03-18 03:47:59 +02:00
Bananymous
1a26a318a4
Kernel: Rework filesystem reading
...
We now read from a filesystem to user provided buffer.
Read sizes are determined by read call.
You should now get file descriptors and do reading through Process::current()
2023-03-17 21:18:41 +02:00
Bananymous
1f2ceeb329
Kernel: VFS caches currently open inodes
2023-03-16 15:31:33 +02:00
Bananymous
c012822d49
BAN: Rename StringView suffix from _sv to sv
2023-03-16 12:15:16 +02:00
Bananymous
8940ff8002
Kernel: You don't have to check whether VFS is initialized or not
...
VFS now returns Error when attempting to traverse inodes if it did
not find root partition
2023-03-09 02:31:24 +02:00
Bananymous
fc58baf54d
Kernel: if VFS initialization does not find root, we fail
2023-03-09 02:17:42 +02:00
Bananymous
7458f68c38
BAN: Error can now be constructed from c_string or format string
...
If the resulting string would overflow, we just truncate it to fit
the error message buffer (128) bytes
2023-03-08 17:05:37 +02:00
Bananymous
23b3028e15
Kernel: Rename RefCounted -> RefPtr and implement RefCounted
2023-03-08 03:26:25 +02:00
Bananymous
a9acf1f6dc
Kernel: PCIDevice is now class with getters and constructor
2023-03-08 02:41:44 +02:00
Bananymous
52aa98ba25
Kernel+LibC: Add some errno codes
...
Kernel now returns ENOMEM and other errnos, so we dont have to write
error messages
2023-03-02 21:10:44 +02:00
Bananymous
90a7268e5a
BAN: Rewrite RefCounted to return ErrorOr
2023-03-02 12:30:11 +02:00
Bananymous
ee5d02aa70
Kernel: Rewrite basically all current disk io stuff
...
This is a big commit that was kinda hard to split to smaller ones.
Essentially we now look at all the mass storage devices from PCI
and initialize (P)ATA devices. This doesn't provide any more functionality
but better abstractions and everything doesn't have to be on its old
default port that might be different for modern computers.
2023-02-26 03:00:29 +02:00
Bananymous
5d31e89574
Kernel: Update ErrorOr API and add path find to VFS
...
These two are done on the same commit since Changes to Shell were
annoying to make work with only one change
2023-02-22 01:23:11 +02:00
Bananymous
038379274e
Kernel: Inode can now return full mode value
...
Kernel::Inode::Mode is an union of bitmasked fields for every
possible bit
2023-02-20 21:39:24 +02:00
Bananymous
efaca469ee
Kernel: Ext2Inode now supports indirect blocks through for_each_block()
2023-02-20 10:25:15 +02:00
Bananymous
80006ea137
Kernel: Initial work on filesystem
...
We support now ext2 directory listing. File reading is not yet supported.
2023-02-20 01:46:00 +02:00