bunnei
51fb0a6f96
core: Switch to unique_ptr for usage of Common::Fiber.
...
- With using unique_ptr instead of shared_ptr, we have more explicit ownership of the context.
- Fixes a memory leak due to circular reference of the shared pointer.
2021-02-27 11:56:04 -08:00
bunnei
09f7c355c6
Merge pull request #5953 from bunnei/memory-refactor-1
...
Kernel Rework: Memory updates and refactoring (Part 1)
2021-02-27 12:48:35 -07:00
ameerj
8e4c9c9852
kernel: Fix resource release exception on exit
...
After rewriting the resource limit, objects releasing reserved resources require a live kernel instance.
This commit fixes exceptions that occur due to the kernel being destroyed before some objects released their resources, allowing for a graceful exit.
2021-02-20 20:51:11 -05:00
bunnei
93e20867b0
hle: kernel: Migrate PageHeap/PageTable to KPageHeap/KPageTable.
2021-02-18 16:16:25 -08:00
bunnei
b1e27890e8
hle: kernel: Migrate MemoryManager to KMemoryManager.
2021-02-18 16:16:25 -08:00
bunnei
93109c870e
hle: kernel: Migrate PageLinkedList to KPageLinkedList.
2021-02-18 16:16:25 -08:00
bunnei
65e0178cc0
hle: kernel: Migrate to KMemoryBlock, KMemoryBlockManager, and others.
2021-02-18 16:16:25 -08:00
bunnei
9e520e8f12
hle: kernel: Migrate SlabHeap to KSlabHeap.
2021-02-18 16:16:25 -08:00
bunnei
1d162f28d1
hle: kernel: Migrate MemoryLayout to KMemoryLayout.
2021-02-18 16:16:25 -08:00
bunnei
7ed5dd0d62
hle: kernel: Migrate AddressSpaceInfo to KAddressSpaceInfo.
2021-02-18 16:16:25 -08:00
bunnei
701ef616b2
hle: kernel: memory_manager: Rename AllocateContinuous to AllocateContinuous.
2021-02-18 16:16:24 -08:00
bunnei
f7a008d77f
hle: kernel: KSystemControl does not belong in Memory namespace.
2021-02-18 16:16:24 -08:00
bunnei
6a19086001
hle: kernel: memory: PageHeap: Migrate to KPageBitmap class.
2021-02-18 16:16:24 -08:00
bunnei
a02566136c
hle: kernel: Add KPageBitmap class.
2021-02-18 16:16:24 -08:00
bunnei
e7c33d1ad6
hle: kernel: system_control: Add function GenerateRandomU64.
2021-02-18 16:16:24 -08:00
bunnei
6da91da08e
hle: kernel: Add KSpinLock implementation.
2021-02-18 16:16:24 -08:00
bunnei
0d62f30b00
hle: kernel: Rename SharedMemory to KSharedMemory.
2021-02-18 16:16:12 -08:00
ameerj
ec9b6641b1
kernel: More accurately reserve and release resources
2021-02-12 19:05:24 -05:00
ameerj
5fa6b15215
kernel: KScopedReservation implementation
...
This implements KScopedReservation, allowing resource limit reservations to be more HW accurate, and release upon failure without requiring too many conditionals.
2021-02-12 18:57:34 -05:00
Chloe
37939482fb
kernel: Unify result codes ( #5890 )
...
* kernel: Unify result codes
Drop the usage of ERR_NAME convention in kernel for ResultName. Removed seperation between svc_results.h & errors.h as we mainly include both most of the time anyways.
* oops
* rename errors to svc_results
2021-02-12 15:43:01 -08:00
Chloe
d0a760a34a
Merge pull request #5872 from lioncash/svc-error
...
svc: Provide more detailed error logs for svc functions
2021-02-08 12:27:36 +11:00
Lioncash
40ab2b9348
k_address_arbiter: Unfold R_UNLESS macros
...
Allows for more descriptive error messages and also doesn't hide
control-path exit returns from the reader.
2021-02-06 04:08:27 -05:00
Lioncash
b8fc74d74d
k_address_arbiter: Remove unnecessary usages of std::addressof
...
This is a useful function in a generic context or with types that
overload unary operator&. However, primitives and pointers will never do
this, so we can opt for a more straightforward syntax.
2021-02-06 04:06:33 -05:00
Lioncash
7b9c58880f
k_address_arbiter: Remove dead code
...
This code is never used, so we can remove it. It's in version control,
so it can always be brought back when needed.
2021-02-06 04:06:33 -05:00
Lioncash
75a60a6e22
svc: Provide more detailed error logs for svc functions
...
Allows SVC calls to have much more informative information during error
cases. This also doesn't hide control flow returns from the reader.
2021-02-06 02:03:40 -05:00
bunnei
1498a7c9a8
Merge pull request #5862 from bunnei/kevent
...
Kernel Rework: Refactor KEvent/KReadableEvent/KWritableEvent
2021-02-05 23:00:43 -08:00
bunnei
3a804752cb
Merge pull request #5875 from lioncash/identifier
...
k_priority_queue: Minor cleanup
2021-02-05 17:02:13 -08:00
bunnei
ea4f62615e
hle: kernel: Drop R_UNLESS_NOLOG in favor of expanded if-statement.
2021-02-05 14:03:36 -08:00
bunnei
546af64340
hle: kernel: KAddressArbiter: Remove noisy error log.
2021-02-05 14:03:36 -08:00
bunnei
eba3c59a61
hle: kernel: svc: Cleanup KEvent/KReadableEvent/KWritableEvent SVCs.
2021-02-05 14:03:36 -08:00
bunnei
ff3c7c068b
hle: kernel: Reimplement KReadableEvent and KWritableEvent.
2021-02-05 14:03:32 -08:00
bunnei
6bf80dfee0
hle: kernel: Implement KEvent.
2021-02-05 14:00:36 -08:00
bunnei
e9446d232f
hle: kernel: KAddressArbiter: Use R_UNLESS_NOLOG where applicable.
2021-02-05 14:00:36 -08:00
bunnei
3f942c01f0
hle: kernel: Rename WritableEvent to KWritableEvent.
2021-02-05 14:00:36 -08:00
bunnei
e86a7e3691
hle: kernel: Rename ReadableEvent to KReadableEvent.
2021-02-05 14:00:36 -08:00
Lioncash
756365386a
k_affinity_mask: Avoid implicit truncation to bool
...
This can cause compiler warnings. Instead, we can explicitly add a
boolean expression around it to naturally turn the result into a bool.
2021-02-04 15:35:46 -05:00
Lioncash
b944edc85d
k_priority_queue: Unfold several declval usages
...
Given these are only used as function existence checks, we can simplify
some usages of declval, given they aren't particularly useful here.
Reduces a few template instantiations, which at most reduces compile
times a tiny bit.
2021-02-04 15:18:58 -05:00
Lioncash
31e6e58101
k_priority_queue: Simplify affinity mask type alias
...
We can make use of the _t variants of the templates to cut down on a
little bit of verbosity.
2021-02-04 14:57:41 -05:00
Lioncash
53aec1fe2d
k_priority_queue: Resolved reserved identifier
...
An identifier containing a starting underscore followed by a capital
letter is reserved by the standard. It's trivial to avoid this by moving
the underscore to the end of the identifier.
While the likelihood of clashing here being minimal, we can turn a
"should not break" scenario into a definitive "will not break" one, so
why not?.
2021-02-04 14:55:08 -05:00
Chloe Marcec
2c6e940493
Simplify limitableresource names
2021-02-03 12:55:16 +11:00
Chloe Marcec
64c3582705
Compile error
2021-02-02 13:23:34 +11:00
Chloe Marcec
9e4b2d60bc
Address issues
2021-02-02 13:23:00 +11:00
Chloe Marcec
ee333e063d
fix compile error
2021-01-30 21:51:22 +11:00
Chloe Marcec
56742c6222
cleanup commenting
2021-01-30 21:20:35 +11:00
Chloe Marcec
7791cfd960
Drop m_ from lock
2021-01-30 21:19:49 +11:00
Chloe Marcec
3bf62c7a8a
Move to GetGlobalTimeNs, fix GetTotalPhysicalMemoryAvailable
2021-01-30 21:03:10 +11:00
Chloe Marcec
3be1a565f8
kernel: Rewrite resource limit to be more accurate
...
Matches closer to hardware
2021-01-30 20:40:49 +11:00
bunnei
543e212554
hle: kernel: KLightLock: Fix several bugs.
2021-01-28 21:53:21 -08:00
bunnei
e24c6dab93
hle: kernel: KThread: Release thread resource on thread exit.
2021-01-28 21:49:47 -08:00
bunnei
10738839ad
yuzu: debugger: Ignore HLE threads.
2021-01-28 21:42:27 -08:00
bunnei
3856564727
hle: kernel: process: Add state lock.
2021-01-28 21:42:26 -08:00
bunnei
ff46ef7ea3
hle: kernel: threading: Fix bug with host thread naming.
2021-01-28 21:42:26 -08:00
bunnei
6ee8340a6b
hle: kernel: k_scheduler_lock: Cleanup.
2021-01-28 21:42:26 -08:00
bunnei
6e953f7f02
hle: kernel: Allocate a dummy KThread for each host thread, and use it for scheduling.
2021-01-28 21:42:26 -08:00
bunnei
37f74d8741
hle: kernel: k_scheduler: Use atomics for current_thread, etc.
2021-01-28 21:42:26 -08:00
bunnei
f6b10fad63
hle: kernel: k_scheduler: Fix for single core mode.
2021-01-28 21:42:26 -08:00
bunnei
0a1449e04b
kernel: Fix build errors.
2021-01-28 21:42:26 -08:00
bunnei
ca78f77827
hle: kernel: KScheduler: Introduce thread context_guard.
2021-01-28 21:42:26 -08:00
bunnei
cdd14b03e5
hle: kernel: Recode implementation of KThread to be more accurate.
2021-01-28 21:42:26 -08:00
bunnei
1470338458
kernel: svc_types: Add ThreadActivity.
2021-01-28 21:42:26 -08:00
bunnei
1772ebeb1e
kernel: KSchedulerPriorityQueue: Lowest priority should be LowestThreadPriority.
2021-01-28 21:42:26 -08:00
bunnei
1f99f5473c
kernel: k_light_lock: Simplify EmuThreadHandle implementation.
2021-01-28 21:42:26 -08:00
bunnei
c0f5830323
hle: kernel: TimeManager: Simplify to not rely on previous EmuThreadHandle implementation.
2021-01-28 21:42:26 -08:00
bunnei
ff186b2498
core: hle: kernel: object: Implement Finalize() virtual method.
2021-01-28 21:42:26 -08:00
bunnei
33b4930280
core: hle: kernel: svc_results: Populate with several missing error codes.
2021-01-28 21:42:26 -08:00
bunnei
5a4fc4a529
core: hle: kernel: Implement KLightLock.
2021-01-28 21:42:26 -08:00
bunnei
97129bc742
core: hle: kernel: Implement KThreadQueue.
2021-01-28 21:42:25 -08:00
bunnei
4dbf3f4880
hle: kernel: KThread: Clean up thread priorities.
2021-01-28 21:42:25 -08:00
bunnei
1e55498110
hle: kernel: KThread: Reorganize thread priority defaults.
2021-01-28 21:42:25 -08:00
bunnei
0530292b97
hle: kernel: KThread: Fix ThreadType definition.
2021-01-28 21:42:25 -08:00
bunnei
4782985013
hle: kernel: Move single core "phantom mode" out of KThread.
...
- This is a workaround that does not belong in a kernel primitive.
2021-01-28 21:42:25 -08:00
bunnei
eea346ba8e
hle: kernel: KThread: Remove thread types that do not exist.
2021-01-28 21:42:25 -08:00
bunnei
c0d3aef28c
core: hle: kernel: Rename Thread to KThread.
2021-01-28 21:42:25 -08:00
Morph
008afa5d59
hle_ipc: Add Can(Read, Write)Buffer
...
Allows us to test whether a buffer can be read from or written to memory
2021-01-28 01:32:24 -05:00
Lioncash
8620de6b20
common/bit_util: Replace CLZ/CTZ operations with standardized ones
...
Makes for less code that we need to maintain.
2021-01-15 02:15:32 -05:00
bunnei
03dfc8d8e7
hle: kernel: thread: Preserve thread wait reason for debugging only.
...
- This is decoupled from core functionality and used for debugging only.
2021-01-11 14:23:17 -08:00
bunnei
6b2f653143
hle: kernel: k_scheduler_lock: Fix shadowing errors.
2021-01-11 14:23:16 -08:00
bunnei
912dd50146
core: hle: Integrate new KConditionVariable and KAddressArbiter implementations.
2021-01-11 14:23:16 -08:00
bunnei
952d1ac487
core: hle: kernel: Update KAddressArbiter.
2021-01-11 14:23:16 -08:00
bunnei
b4e6d6c385
core: hle: kernel: Update KConditionVariable.
2021-01-11 14:23:16 -08:00
bunnei
1212fa60b6
core: hle: kernel: Begin moving common SVC defintions to its own header.
2021-01-11 14:23:16 -08:00
bunnei
8a155c4058
hle: kernel: Remove unnecessary AddressArbiter definition.
2021-01-11 14:23:16 -08:00
bunnei
f12701b303
hle: kernel: k_scheduler: Cleanup OnThreadPriorityChanged.
2021-01-11 14:23:16 -08:00
bunnei
d1309fb275
hle: kernel: Rename thread "status" to "state".
2021-01-11 14:23:16 -08:00
bunnei
c3c43e32fc
hle: kernel: thread: Replace ThreadStatus/ThreadSchedStatus with a single ThreadState.
...
- This is how the real kernel works, and is more accurate and simpler.
2021-01-11 14:23:16 -08:00
bunnei
7420a717e6
core: hle: kernel: Add some useful functions for checking kernel addresses.
2021-01-11 14:23:16 -08:00
bunnei
4bbf173fc1
core: hle: kernel: svc_types: Add type definitions for KAddressArbiter.
2021-01-11 14:23:16 -08:00
bunnei
35c3c078e3
core: hle: kernel: Update KSynchronizationObject.
2021-01-11 14:23:16 -08:00
bunnei
1ae883435d
core: hle: kernel: Begin moving common SVC results to its own header.
2021-01-11 14:23:16 -08:00
ReinUsesLisp
4f13e270c8
core: Silence warnings when compiling without asserts
2021-01-05 04:18:16 -03:00
Morph
a745d87971
general: Fix various spelling errors
2021-01-02 10:23:41 -05:00
bunnei
eb318ffffc
Merge pull request #5249 from ReinUsesLisp/lock-free-pages
...
core/memory: Read and write page table atomically
2021-01-01 02:54:01 -08:00
bunnei
25d607f5f6
Merge pull request #5208 from bunnei/service-threads
...
Service threads
2020-12-30 22:06:05 -08:00
ReinUsesLisp
b3587102d1
core/memory: Read and write page table atomically
...
Squash attributes into the pointer's integer, making them an uintptr_t
pair containing 2 bits at the bottom and then the pointer. These bits
are currently unused thanks to alignment requirements.
Configure Dynarmic to mask out these bits on pointer reads.
While we are at it, remove some unused attributes carried over from
Citra.
Read/Write and other hot functions use a two step unpacking process that
is less readable to stop MSVC from emitting an extra AND instruction in
the hot path:
mov rdi,rcx
shr rdx,0Ch
mov r8,qword ptr [rax+8]
mov rax,qword ptr [r8+rdx*8]
mov rdx,rax
-and al,3
and rdx,0FFFFFFFFFFFFFFFCh
je Core::Memory::Memory::Impl::Read<unsigned char>
mov rax,qword ptr [vaddr]
movzx eax,byte ptr [rdx+rax]
2020-12-29 21:54:49 -03:00
bunnei
85cfd96f62
Merge pull request #5247 from comex/xx-concepts
...
k_priority_queue: Fix concepts use
2020-12-29 16:50:20 -08:00
bunnei
82e0eeed21
hle: kernel: service_thread: Make thread naming more consistent.
2020-12-29 16:46:29 -08:00
bunnei
a2a0f5318d
hle: kernel: Manage service threads on another thread.
...
- This is to allow service threads to defer destruction of themselves.
2020-12-29 16:46:29 -08:00
bunnei
b02464f685
Merge pull request #5246 from comex/xx-include
...
Add missing include of "core/hle/kernel/kernel.h"
2020-12-29 16:43:17 -08:00
bunnei
c192da3f82
hle: kernel: Manage host thread IDs using TLS.
...
- Avoids the need to have a large map of host to guest thread IDs.
2020-12-29 15:55:30 -08:00
comex
388cf58b31
k_priority_queue: Fix concepts use
...
- For `std::same_as`, add missing include of `<concepts>`.
- For `std::convertible_to`, create a replacement in `common/concepts.h`
and use that instead.
This would also be found in `<concepts>`, but unlike `std::same_as`,
`std::convertible_to` is not yet implemented in libc++, LLVM's STL
implementation - not even in master. (In fact, `std::same_as` is the
*only* concept currently implemented. For some reason.)
2020-12-29 14:33:41 -05:00