Quellcode durchsuchen

kernel/process_capability: Handle handle table capability flags

This just specifies the handle table size. There's also a section of
reserved bits that are checked against.
Lioncash vor 7 Jahren
Ursprung
Commit
10824c5d63

+ 6 - 1
src/core/hle/kernel/process_capability.cpp

@@ -332,7 +332,12 @@ ResultCode ProcessCapabilities::HandleKernelVersionFlags(u32 flags) {
 }
 
 ResultCode ProcessCapabilities::HandleHandleTableFlags(u32 flags) {
-    // TODO: Implement
+    const u32 reserved = flags >> 26;
+    if (reserved != 0) {
+        return ERR_RESERVED_VALUE;
+    }
+
+    handle_table_size = (flags >> 16) & 0x3FF;
     return RESULT_SUCCESS;
 }
 

+ 5 - 0
src/core/hle/kernel/process_capability.h

@@ -155,6 +155,11 @@ public:
         return program_type;
     }
 
+    /// Gets the number of total allowable handles for the process' handle table.
+    u32 GetHandleTableSize() const {
+        return handle_table_size;
+    }
+
     /// Gets the kernel version value.
     u32 GetKernelVersion() const {
         return kernel_version;