mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-03 16:39:01 -06:00 
			
		
		
		
	core: hle: kernel: k_handle_table: Use KScopedDisableDispatch as necessary.
This commit is contained in:
		@@ -13,6 +13,7 @@ ResultCode KHandleTable::Finalize() {
 | 
			
		||||
    // Get the table and clear our record of it.
 | 
			
		||||
    u16 saved_table_size = 0;
 | 
			
		||||
    {
 | 
			
		||||
        KScopedDisableDispatch dd(kernel);
 | 
			
		||||
        KScopedSpinLock lk(m_lock);
 | 
			
		||||
 | 
			
		||||
        std::swap(m_table_size, saved_table_size);
 | 
			
		||||
@@ -43,6 +44,7 @@ bool KHandleTable::Remove(Handle handle) {
 | 
			
		||||
    // Find the object and free the entry.
 | 
			
		||||
    KAutoObject* obj = nullptr;
 | 
			
		||||
    {
 | 
			
		||||
        KScopedDisableDispatch dd(kernel);
 | 
			
		||||
        KScopedSpinLock lk(m_lock);
 | 
			
		||||
 | 
			
		||||
        if (this->IsValidHandle(handle)) {
 | 
			
		||||
@@ -61,6 +63,7 @@ bool KHandleTable::Remove(Handle handle) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResultCode KHandleTable::Add(Handle* out_handle, KAutoObject* obj, u16 type) {
 | 
			
		||||
    KScopedDisableDispatch dd(kernel);
 | 
			
		||||
    KScopedSpinLock lk(m_lock);
 | 
			
		||||
 | 
			
		||||
    // Never exceed our capacity.
 | 
			
		||||
@@ -83,6 +86,7 @@ ResultCode KHandleTable::Add(Handle* out_handle, KAutoObject* obj, u16 type) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResultCode KHandleTable::Reserve(Handle* out_handle) {
 | 
			
		||||
    KScopedDisableDispatch dd(kernel);
 | 
			
		||||
    KScopedSpinLock lk(m_lock);
 | 
			
		||||
 | 
			
		||||
    // Never exceed our capacity.
 | 
			
		||||
@@ -93,6 +97,7 @@ ResultCode KHandleTable::Reserve(Handle* out_handle) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KHandleTable::Unreserve(Handle handle) {
 | 
			
		||||
    KScopedDisableDispatch dd(kernel);
 | 
			
		||||
    KScopedSpinLock lk(m_lock);
 | 
			
		||||
 | 
			
		||||
    // Unpack the handle.
 | 
			
		||||
@@ -111,6 +116,7 @@ void KHandleTable::Unreserve(Handle handle) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KHandleTable::Register(Handle handle, KAutoObject* obj, u16 type) {
 | 
			
		||||
    KScopedDisableDispatch dd(kernel);
 | 
			
		||||
    KScopedSpinLock lk(m_lock);
 | 
			
		||||
 | 
			
		||||
    // Unpack the handle.
 | 
			
		||||
 
 | 
			
		||||
@@ -69,6 +69,7 @@ public:
 | 
			
		||||
    template <typename T = KAutoObject>
 | 
			
		||||
    KScopedAutoObject<T> GetObjectWithoutPseudoHandle(Handle handle) const {
 | 
			
		||||
        // Lock and look up in table.
 | 
			
		||||
        KScopedDisableDispatch dd(kernel);
 | 
			
		||||
        KScopedSpinLock lk(m_lock);
 | 
			
		||||
 | 
			
		||||
        if constexpr (std::is_same_v<T, KAutoObject>) {
 | 
			
		||||
@@ -123,6 +124,7 @@ public:
 | 
			
		||||
        size_t num_opened;
 | 
			
		||||
        {
 | 
			
		||||
            // Lock the table.
 | 
			
		||||
            KScopedDisableDispatch dd(kernel);
 | 
			
		||||
            KScopedSpinLock lk(m_lock);
 | 
			
		||||
            for (num_opened = 0; num_opened < num_handles; num_opened++) {
 | 
			
		||||
                // Get the current handle.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user