summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_auto_object.h (unfollow)
Commit message (Collapse)AuthorFilesLines
2023-07-15Fixes and workarounds to make UBSan happier on macOScomex1-2/+3
There are still some other issues not addressed here, but it's a start. Workarounds for false-positive reports: - `RasterizerAccelerated`: Put a gigantic array behind a `unique_ptr`, because UBSan has a [hardcoded limit](https://stackoverflow.com/questions/64531383/c-runtime-error-using-fsanitize-undefined-object-has-a-possibly-invalid-vp) of how big it thinks objects can be, specifically when dealing with offset-to-top values used with multiple inheritance. Hopefully this doesn't have a performance impact. - `QueryCacheBase::QueryCacheBase`: Avoid an operation that UBSan thinks is UB even though it at least arguably isn't. See the link in the comment for more information. Fixes for correct reports: - `PageTable`, `Memory`: Use `uintptr_t` values instead of pointers to avoid UB from pointer overflow (when pointer arithmetic wraps around the address space). - `KScheduler::Reload`: `thread->GetOwnerProcess()` can be `nullptr`; avoid calling methods on it in this case. (The existing code returns a garbage reference to a field, which is then passed into `LoadWatchpointArray`, and apparently it's never used, so it's harmless in practice but still triggers UBSan.) - `KAutoObject::Close`: This function calls `this->Destroy()`, which overwrites the beginning of the object with junk (specifically a free list pointer). Then it calls `this->UnregisterWithKernel()`. UBSan complains about a type mismatch because the vtable has been overwritten, and I believe this is indeed UB. `UnregisterWithKernel` also loads `m_kernel` from the 'freed' object, which seems to be technically safe (the overwriting doesn't extend as far as that field), but seems dubious. Switch to a `static` method and load `m_kernel` in advance.
2023-04-30kernel: match calls to Register and UnregisterLiam1-2/+2
2023-03-13kernel: prefer std::addressofLiam1-1/+1
2023-03-13kernel: remove kernel_Liam1-3/+3
2023-03-13kernel: convert KPort, KSessionLiam1-9/+0
2023-01-30Move to Clang Format 15Levi Behunin1-14/+6
Depends on https://github.com/yuzu-emu/build-environments/pull/69 clang-15 primary run
2022-06-14kernel: fix inconsistency in AutoObjectTraits macro definitionsLiam1-4/+7
2022-04-23general: Convert source file copyright comments over to SPDXMorph1-3/+2
This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-08hle: kernel: k_auto_object: Move unregister with kernel to after Destroy.bunnei1-3/+2
- Destructor is no longer invoked, so our object counting was off.
2022-04-04k_auto_object: Fix data racelat9nq1-1/+1
Change the memory order to acqure-release when we decrement the reference count. Prevents a race with line 89 reported by TSan.
2022-02-02general: Move deleted copy/move constructor/assignment operators to public interfaceLioncash1-3/+4
This allows for better compiler errors, where the compiler will state a copy or move couldn't occur due to the relevant function being deleted. Previously a compiler would warn about the relevant function not being accessible (which, while true, isn't as informative as it could be).
2021-12-07core: hle: kernel: k_auto_object: Add GetName method.bunnei1-0/+4
- Useful purely for debugging.
2021-08-26Revert "kernel: Various improvements to scheduler"bunnei1-4/+0
2021-08-07core: hle: kernel: k_auto_object: Add GetName method.bunnei1-0/+4
- Useful purely for debugging.
2021-07-21hle: kernel: Provide methods for tracking dangling kernel objects.bunnei1-2/+10
2021-06-07hle: kernel: KAutoObjectWithListContainer: Use boost::instrusive::rbtree.bunnei1-4/+7
- Fixes some crashes introduced by our common intrusive red/black tree impl.
2021-05-08kernel: Eliminate variable shadowingLioncash1-5/+1
Now that the large kernel refactor is merged, we can eliminate the remaining variable shadowing cases.
2021-05-06fixup! hle: kernel: Add initial impl. of KAutoObject.bunnei1-46/+46
2021-05-06fixup! hle: kernel: Add initial impl. of KAutoObject.bunnei1-1/+1
2021-05-06common: Rename NON_COPYABLE/NON_MOVABLE with YUZU_ prefix.bunnei1-3/+3
2021-05-06hle: kernel: Migrate to KHandleTable.bunnei1-2/+0
2021-05-06hle: kernel: Rename Process to KProcess.bunnei1-2/+2
2021-05-06hle: kernel: Remove deprecated Object class.bunnei1-4/+10
2021-05-06hle: kernel: Migrate more of KThread to KAutoObject.bunnei1-8/+20
2021-05-06hle: kernel: Add initial impl. of KAutoObject.bunnei1-0/+290