Commit Graph

332 Commits

Author SHA1 Message Date
4lDO2 156017a25d Refactor: wrap RwLock<AddrSpace>. 2024-03-04 19:03:00 +01:00
4lDO2 749df4c869 Fail successfully with todo! 2024-03-04 19:03:00 +01:00
4lDO2 bb30530ea0 Track which CPUs are using any given AddrSpace. 2024-03-04 19:03:00 +01:00
4lDO2 0c6c857012 Improve LogicalCpu{Id,Set}, make set atomic.
Technically there should be an atomic and nonatomic set type, but perf
should be the same, as the nonatomic one would only be used when setting
the sched_affinity.
2024-03-04 19:02:56 +01:00
bjorn3 24187b5f80 Move set_tss_stack call to switch_to 2024-02-25 20:10:49 +01:00
bjorn3 782ec87f27 Fix UB in the locking code of context switching
The spin crate considers it UB to call force_write_unlock while there is
a threads trying to obtain a read lock on the same rwlock.

This also switches to the spinning_lot crate for the context rwlock as
it has support for a write guard keeping a reference to the rwlock using
an Arc instead of a reference.
2024-02-25 17:07:41 +01:00
Jeremy Soller 6c6fc18f8e Format 2024-02-16 21:40:42 -07:00
Jeremy Soller 86589aa7fa Only switch to idle process when no other processes can run 2024-02-13 14:46:21 -07:00
Jeremy Soller 98f12fd750 Hack to workaround hangs by pinning to one cpu 2024-02-10 09:18:57 -07:00
Jeremy Soller 45f1c4e29e Add rustfmt from relibc and apply it with cargo fmt 2024-01-17 13:52:01 -07:00
Jeremy Soller d18c316012 Add session ID 2024-01-08 14:43:11 -07:00
4lDO2 ee3aafa1d9 Remove PhysBorrowed hacks. 2023-12-15 15:14:40 +01:00
4lDO2 d4a120188f Ensure PhysBorrowed iff !alloc-owned, vice versa.
This is allowed now that the old physalloc/physfree syscalls have been
removed.
2023-12-15 15:14:40 +01:00
4lDO2 a42e406569 Fix contiguous mmap. 2023-12-15 15:14:40 +01:00
4lDO2 77400f63ee Add a memory: file for phys-contiguous mmaps. 2023-12-15 15:14:36 +01:00
Jeremy Soller 1cc5804333 Allow CPUs to take any context 2023-12-13 17:20:43 -07:00
Jeremy Soller 4386e0716d Missed change for last commit 2023-12-13 17:20:21 -07:00
Jeremy Soller fbaa4306e3 Add unblock_no_ipi function and use in context switch 2023-12-13 17:19:43 -07:00
bjorn3 2d065083df Use HashMap instead of BTreeMap where possible
This shrinks the kernel from 905840 bytes to 862408 bytes.
2023-12-13 19:55:20 +01:00
4lDO2 88508a2cb7 Remove as_user_inner. 2023-12-13 11:08:12 +01:00
4lDO2 679c26c03b s/Arc<dyn KernelScheme>/enum, but deref as dyn. 2023-12-13 11:08:07 +01:00
bjorn3 a7165f822f Switch from the memoffset crate to the offset_of feature
The memoffset crate requires const_refs_to_cell to work in const
contexts. This feature has some known issues around it's semantics. The
offset_of feature however is currently on track for stabilization.
2023-12-12 20:21:31 +00:00
bjorn3 017702d3d2 Remove a lot of dead code 2023-12-12 15:01:29 +00:00
4lDO2 036a4bdee4 Replace syscall::Scheme with KernelScheme. 2023-11-15 20:00:47 +01:00
Enver Balalic 750e566a27 Get aarch64 to compile
Fixes enough errors to get the kernel to compile
2023-10-01 23:55:24 +02:00
4lDO2 5eace9997a Compile successfully on i686 as well. 2023-09-16 10:48:25 +02:00
4lDO2 dde8f78903 Support XSAVE, XSAVEOPT, and AVX2. 2023-09-14 10:54:30 +02:00
4lDO2 38e669c807 Dynamic fsgsbase support, enable by default. 2023-09-14 09:25:30 +02:00
4lDO2 f028b77412 Use config.toml instead of x86_* Cargo feature. 2023-09-12 21:19:06 +02:00
4lDO2 f025ece614 Replace from/into with get/new when necessary. 2023-09-06 08:38:10 +02:00
4lDO2 45d1c256ea Add LogicalCpuSet as a sched affinity mask. 2023-09-04 21:57:54 +02:00
4lDO2 3b725b2c27 Add logical CPU ID newtype, switch to u32. 2023-09-04 21:27:48 +02:00
4lDO2 cbd02a8489 Set relocation-model=static 2023-08-12 00:57:45 +00:00
4lDO2 a78d6e42f8 Stop using #[thread_local] on x86_*. 2023-08-08 12:01:42 +02:00
4lDO2 bdd5c954dc Move PIT_TICKS to context::switch. 2023-08-08 12:01:42 +02:00
4lDO2 8f98d5b987 Extend mremap, eager mappings for real hardware. 2023-08-03 12:37:58 +02:00
4lDO2 c7714992f3 Fix clone_grant_using_fmap test. 2023-08-02 14:17:26 +02:00
4lDO2 2070fa44b7 Fix warnings. 2023-08-02 13:07:49 +02:00
4lDO2 05a9530ac7 Temporarily disable CoW fmaps. 2023-08-01 17:29:36 +02:00
4lDO2 fe88b23d09 Use a single cow zeroed page for RO maps + eager mapping. 2023-08-01 13:11:00 +02:00
4lDO2 ec9c24f841 WIP: aarch64 2023-07-27 19:05:33 +02:00
4lDO2 3cfec39b47 Pass MunmapFlags to scheme. 2023-07-25 10:52:24 +02:00
4lDO2 c9aa5ca851 WIP: Add SYS_MREMAP. 2023-07-25 10:52:24 +02:00
4lDO2 2660c3e07a WIP: Pin fmap grants that are borrowed too.
This might not be the most ideal solution, since a GiB grant can be
EBUSY blocked if a single page is used by an indefinitely-blocking
UserScheme. But, the alternatives would impose lots of additional
complexity, such as increasing the PageInfo size, adding more
refcounting arrays to grants, etc.
2023-07-25 10:52:24 +02:00
4lDO2 e2b736140f Make PageInfo atomic once again. 2023-07-25 10:52:24 +02:00
4lDO2 d58ddc35fe Complete PageInfo cleanup.
This enables proper CoW ^ shared enforcement, so that e.g. acquiring a
new CoW page from already shared memory, or vice versa, will enforce
that they aren't both simultaneously.
2023-07-25 10:52:23 +02:00
4lDO2 0f1b5b9b6f WIP: Make cow/shared refcounts mutually exclusive. 2023-07-25 10:52:23 +02:00
4lDO2 113cb5ed4e Ensure pages cannot be both CoW and shared. 2023-07-25 10:52:23 +02:00
4lDO2 d3ecedefd9 Notify schemes when mmaps are unmapped. 2023-07-25 10:52:23 +02:00
4lDO2 02f04752e8 Use proper locks for PageInfo. 2023-07-25 10:52:23 +02:00