Răsfoiți Sursa

hle: kernel: Further cleanup and add TIPC helpers.

bunnei 5 ani în urmă
părinte
comite
ed25191ee6
2 a modificat fișierele cu 12 adăugiri și 4 ștergeri
  1. 1 1
      src/core/hle/kernel/hle_ipc.cpp
  2. 11 3
      src/core/hle/kernel/hle_ipc.h

+ 1 - 1
src/core/hle/kernel/hle_ipc.cpp

@@ -99,7 +99,7 @@ void HLERequestContext::ParseCommandBuffer(const KHandleTable& handle_table, u32
         buffer_w_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>());
         buffer_w_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>());
     }
     }
 
 
-    buffer_c_offset = rp.GetCurrentOffset() + command_header->data_size;
+    const auto buffer_c_offset = rp.GetCurrentOffset() + command_header->data_size;
 
 
     // Padding to align to 16 bytes
     // Padding to align to 16 bytes
     rp.AlignWithPadding();
     rp.AlignWithPadding();

+ 11 - 3
src/core/hle/kernel/hle_ipc.h

@@ -128,10 +128,19 @@ public:
     /// Writes data from this context back to the requesting process/thread.
     /// Writes data from this context back to the requesting process/thread.
     ResultCode WriteToOutgoingCommandBuffer(KThread& requesting_thread);
     ResultCode WriteToOutgoingCommandBuffer(KThread& requesting_thread);
 
 
-    u32_le GetCommand() const {
+    u32_le GetHipcCommand() const {
         return command;
         return command;
     }
     }
 
 
+    u32_le GetTipcCommand() const {
+        return static_cast<u32_le>(command_header->type.Value()) -
+               static_cast<u32_le>(IPC::CommandType::TIPC_CommandRegion);
+    }
+
+    u32_le GetCommand() const {
+        return command_header->IsTipc() ? GetTipcCommand() : GetHipcCommand();
+    }
+
     bool IsTipc() const {
     bool IsTipc() const {
         return command_header->IsTipc();
         return command_header->IsTipc();
     }
     }
@@ -140,7 +149,7 @@ public:
         return command_header->type;
         return command_header->type;
     }
     }
 
 
-    unsigned GetDataPayloadOffset() const {
+    u32 GetDataPayloadOffset() const {
         return data_payload_offset;
         return data_payload_offset;
     }
     }
 
 
@@ -296,7 +305,6 @@ private:
     std::vector<IPC::BufferDescriptorC> buffer_c_desciptors;
     std::vector<IPC::BufferDescriptorC> buffer_c_desciptors;
 
 
     u32 data_payload_offset{};
     u32 data_payload_offset{};
-    u32 buffer_c_offset{};
     u32 handles_offset{};
     u32 handles_offset{};
     u32 domain_offset{};
     u32 domain_offset{};
     u32_le command{};
     u32_le command{};