Commit graph

125 commits

Author SHA1 Message Date
Sam Tebbs
426eb13d46 Add VFS syscalls 2023-01-19 22:09:48 +00:00
Sam Tebbs
a023fadc24 Revert "Split the project into packages."
This reverts commit ab93a33bbd.
2023-01-18 21:38:25 +00:00
Sam Tebbs
6156f1b30a Create task 0 like other tasks 2023-01-18 21:27:54 +00:00
Dawid Sobczak
ab93a33bbd Split the project into packages. 2022-06-18 17:15:46 +01:00
Samuel Tebbs
9cd3765334 Combine ComptimeBitmap and Bitmap 2022-06-05 14:05:24 +01:00
Samuel Tebbs
bdcb6f4a79 syscalls: pass cpu state to handler 2022-06-03 09:42:46 +01:00
Samuel Tebbs
b42357d31d Improve syscall error conversion 2022-06-03 09:26:09 +01:00
Kyle Aleshire
06f45400bd Update source tree for zig 0.9.1 2022-03-06 15:22:34 +00:00
Sam Tebbs
a072f9eed1 Create a task from elf data 2021-06-24 21:46:04 +01:00
Edward Dean
4b219c43d7 Add allocator to paging unmap to free allocated entries
fmt
2021-02-25 20:30:18 +00:00
Sam Tebbs
f62ba58f1a Remove constants.zig 2021-02-22 14:22:54 +00:00
Edward Dean
3020167ddc Update to zig master 2021-02-17 17:12:40 +00:00
Sam Tebbs
e48c1a2e3c Remove keyboard test code 2021-01-25 17:38:46 +00:00
Sam Tebbs
aaaa6405ad Update to zig master 2021-01-23 13:26:59 +00:00
DrDeano
4afecd6508
See description
Added finding the next free cluster
Added name to long name
Added long name to short name
Added tests for above

Added createLongNameEntry + tests

Moved tests to bottom

Added createShortNameEntry + test

Used the RTC for the date and time for the created short entry

Tidied createEntries


A bit of refactor

No symlinks for FAT32

findNextFreeCluster updates FAT

Reordered tests to better follow the FAT32FS code
FAT32 has no support for symlinks, so removed code around this.
Removed open_args from createNode as it doesn't need it

Added writeEntries + tests

Write the short and long entries to disk
findNextFreeCluster update cluster chain with parent cluster

Added FAT32 write + tests

This Added the ability to create files and directories and write to files.
Added location of the short dir entry for the file so can update the size of the file on disk
Added folders to the test FAT32 directory.
Also fixed minor bug in mkfat32

Added check for destroying the filesystem


Fixed error message for cluster size


Simpler if condition


0x0FFFFFFF => 0xFFFFFFFF


Spelling


Fixed test
2021-01-04 08:50:20 +00:00
DrDeano
d32c52b13b
SymlinkNode + umount + closeing dir path
Added a symlink node so can close a open symlink.
Added umount to can unmount a directory.
Closes open directories while traversing the path.
Closes #277
2021-01-02 23:02:54 +00:00
DrDeano
f87f66a37f
Fixed FAT32 tests
Git workflow changed to run on any push
Mount in utf8 so copies files unicode filenames correctly
Renamed large_file2 to large_file
2020-12-27 13:31:07 +00:00
DrDeano
45f37dc3c1
Added read functionality to FAT32
Create test FAT32 image on build
Moved test files to test_files directory
Removed global array for test fat32
Part of #216
Removed hard coded test files


Use @embedFile for large file test
2020-12-12 22:31:42 +00:00
Sam Tebbs
b8ebc5f341 Remove unneeded mocking files 2020-12-07 23:15:35 +00:00
DrDeano
0497beb5c6
Added the ability to close a directory node
Updated docs
Closes #270


Update doc comment


Moved close to closeFile and closeDir in VFS


Moved back to @ptrCast()


Always forget to format


Added TODO comment
2020-12-07 22:45:28 +00:00
DrDeano
d5de173fd3
Add a quick format option for mkfat32
Added open implementation

Needed to return a pointer to the file system as `@fieldParentPtr(Fat32Self, "instance", fs.instance)` doesn't work as the the pointer to `instance` is on the stack, then goes out of scope when the init is returned. So will be using free stack space.
Part of #216

Spelling, doc comments and extra test for open file


init -> create, deinit -> destroy
2020-12-07 18:29:16 +00:00
DrDeano
583b9ff43e
Added cluster and entry iterators
This adds iterators to loop over the FAT cluster chain and loop over entries in the directory structure of FAT32.
The tests use hand crafted buffers for a FAT32 filesystem. These are too small for real FAT32 but will still demonstrate the same functionality as if there were real FAT32 buffers.

Added tests for EntryIterator init

Fixed memory leaks
2020-12-01 09:54:45 +00:00
Sam Tebbs
c0a0c164c3 Add error handling for syscalls 2020-11-29 13:47:23 +00:00
iamgweej
e90d861554 Changed to Int in std.meta 2020-11-29 13:05:51 +00:00
Sam Tebbs
0a45b733eb Add ELF loader 2020-11-22 22:38:51 +00:00
DrDeano
fab372a6cf
Initial FAT32 interface
Include code page 437

This is now moved to a better location

Fixed initrd doc for allocator


Added test files

 Plus minor extras

Created initial FAT32 filesystem

This initial FAT32 filesystem will parse a stream, which could be a HDD or a in memory filesystem and produce a FAT32 filesystem. This will check if the raw bytes is a valid FAT32 filesystem as descibed in the spec.

This is only a skeleton with no open, read or write functionality.

Part of #216

logger -> log


Fmt


Removed 'zero_' from struct fields


number_free_cluster -> number_free_clusters


Return non allocated FAT32FS


prefix test_


Added doc comment for boot sector arrays


Moved code_page.zig


info -> debug for init FAT32


Abstracted getting code page table
2020-11-22 21:37:39 +00:00
Sam Tebbs
6bbdadfa94 Rework copyDataToVMM to work in both directions 2020-11-20 17:44:01 +00:00
DrDeano
788bef5029
Rename the logger to log to make is all consistent
Move to `log`


Fixed kmain log
2020-11-13 19:16:25 +00:00
Sam Tebbs
307ea7a52e Add user mode 2020-11-07 09:00:10 +00:00
Sam Tebbs
238e050c8c Check for memory leaks in all tests that allocate memory 2020-11-05 18:50:55 +00:00
Sam Tebbs
1453540bae Add symlink support 2020-11-05 18:21:13 +00:00
Sam Tebbs
08cd95d592 Update to zig master 2020-11-02 18:21:15 +00:00
iamgweej
e96c3165a2 Converted Read and Write from silce returning to slice accepting 2020-10-26 17:38:54 +00:00
Sam Tebbs
9005cce68b Update to zig master 2020-10-18 18:59:20 +01:00
DrDeano
abc712233b
Initial PCI interface
Closes #244

Move PCI to arch

Plus spelling

Added new out and in functions


Added new out and in to mocking


Return pci devices as a list


Improved comment


Removed mask for the return


Removed type for OUT


Added new types
2020-10-10 00:35:20 +01:00
Sam Tebbs
1616ec19a4 Update to zig master 2020-09-07 17:06:12 +01:00
iamgweej
24a5e7c135 Minor change: reorder destroy() and deinit() 2020-08-29 18:33:45 +03:00
Sam Tebbs
1a74b085b8 Use vmm.virtToPhys in x86 paging 2020-08-25 17:43:07 +01:00
Sam Tebbs
b7c3084f09 Fix for TailQueue and std.log changes 2020-08-23 14:42:56 +01:00
iamgweej
34bc8d0ae1 Added file closing in VFS functions 2020-08-16 11:43:29 +01:00
Sam Tebbs
95885f4407 Add new parameters for resize and alloc 2020-08-15 21:35:31 +01:00
Sam Tebbs
73d0b2fd3d Add keyboard and an x86 driver 2020-08-06 19:40:24 +01:00
DrDeano
7b5f921d9f
File system files to new folder and use FixedBufferStream for initrd
Fixed non-header aligned sizes

When allocating a size that isn't aligned to the Header, then we get a incorrect alignment.
To fix this, added additional alignment padding to the next free header.

Fixed adding strings to build options
2020-08-06 18:13:53 +01:00
Sam Tebbs
e914841ade Add virtToPhys and physToVirt 2020-07-30 09:18:01 +01:00
Sam Tebbs
154f7c6d6c Don't override attributes when creating a new paging table 2020-07-26 14:30:52 +01:00
DrDeano
1ea9dbe79d
Fix mapping of addresses that span the 4MB boundary
Also removed unused variables

Fixed unmapping of addresses that span the 4MB boundary


Fixed clearing directory


Fmt


Improved paging maps and unmaps
2020-07-26 13:21:06 +01:00
DrDeano
bcc1712737
Created ramdisk build step
Refactored tests for the scheduler and task


Revert "Refactored tests for the scheduler and task"

This reverts commit 2bf56a368bc18f2bd2d33c385e3672d07e4431d9.

Refactored tests for the scheduler and task


Task fmt


Task fmt again >:(


Ramdisk


Added NotOpened error for file read and write
Added vfs init to initialise the root node
Added the ramdisk.initrd file to grub
Update makeiso to copy the ramdisk to the modules folder
Add a ramdisk step to create a ramdisk to be leaded by grub and parsed by the kernel
Add test files for runtime tests of ramdisk

vfs.init => vfs.setRoot


Improved ramdisk step

Also spelling

Changed name for the initrd


Rename RamdiskFS => InitrdFS


Add deinit for initrd

Fixed VMM unmap

{}
2020-07-25 11:18:19 +01:00
DrDeano
1030633d1d
WIP
Page fault loop

Fixed up the virtual memory mapping

Removed un-used parameters in arch.init
Some doc comments
Name changes
2020-07-24 23:51:27 +01:00
DrDeano
fbd135c437
Move to std.log
Removed nothing to pass tests


Removed log imports

Plus some spelling
2020-07-23 20:47:56 +01:00
DrDeano
6bca2de1c6
Add newline parsing
The symbol name can have spaces.
Changed the parseName to use the newline parsing.
Also used str.len

Missed whitespace => newline


Add a nothing to run release safe tests
2020-07-23 11:42:18 +01:00