Преглед изворни кода

kernel/process_capability: Handle debug capability flags

Lioncash пре 7 година
родитељ
комит
d09fb82113
2 измењених фајлова са 18 додато и 1 уклоњено
  1. 7 1
      src/core/hle/kernel/process_capability.cpp
  2. 11 0
      src/core/hle/kernel/process_capability.h

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

@@ -342,7 +342,13 @@ ResultCode ProcessCapabilities::HandleHandleTableFlags(u32 flags) {
 }
 
 ResultCode ProcessCapabilities::HandleDebugFlags(u32 flags) {
-    // TODO: Implement
+    const u32 reserved = flags >> 19;
+    if (reserved != 0) {
+        return ERR_RESERVED_VALUE;
+    }
+
+    is_debuggable = (flags & 0x20000) != 0;
+    can_force_debug = (flags & 0x40000) != 0;
     return RESULT_SUCCESS;
 }
 

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

@@ -165,6 +165,17 @@ public:
         return kernel_version;
     }
 
+    /// Whether or not this process can be debugged.
+    bool IsDebuggable() const {
+        return is_debuggable;
+    }
+
+    /// Whether or not this process can forcibly debug another
+    /// process, even if that process is not considered debuggable.
+    bool CanForceDebug() const {
+        return can_force_debug;
+    }
+
 private:
     /// Attempts to parse a given sequence of capability descriptors.
     ///