forked from eden-emu/eden
		
	Merge pull request #6320 from Morph1984/get-pid
hle_ipc: Add a getter for PID
This commit is contained in:
		
						commit
						ea4e4b05e4
					
				
					 2 changed files with 14 additions and 9 deletions
				
			
		|  | @ -64,7 +64,7 @@ void HLERequestContext::ParseCommandBuffer(const KHandleTable& handle_table, u32 | ||||||
|     if (command_header->enable_handle_descriptor) { |     if (command_header->enable_handle_descriptor) { | ||||||
|         handle_descriptor_header = rp.PopRaw<IPC::HandleDescriptorHeader>(); |         handle_descriptor_header = rp.PopRaw<IPC::HandleDescriptorHeader>(); | ||||||
|         if (handle_descriptor_header->send_current_pid) { |         if (handle_descriptor_header->send_current_pid) { | ||||||
|             rp.Skip(2, false); |             pid = rp.Pop<u64>(); | ||||||
|         } |         } | ||||||
|         if (incoming) { |         if (incoming) { | ||||||
|             // Populate the object lists with the data in the IPC request.
 |             // Populate the object lists with the data in the IPC request.
 | ||||||
|  | @ -86,16 +86,16 @@ void HLERequestContext::ParseCommandBuffer(const KHandleTable& handle_table, u32 | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     for (unsigned i = 0; i < command_header->num_buf_x_descriptors; ++i) { |     for (u32 i = 0; i < command_header->num_buf_x_descriptors; ++i) { | ||||||
|         buffer_x_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorX>()); |         buffer_x_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorX>()); | ||||||
|     } |     } | ||||||
|     for (unsigned i = 0; i < command_header->num_buf_a_descriptors; ++i) { |     for (u32 i = 0; i < command_header->num_buf_a_descriptors; ++i) { | ||||||
|         buffer_a_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>()); |         buffer_a_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>()); | ||||||
|     } |     } | ||||||
|     for (unsigned i = 0; i < command_header->num_buf_b_descriptors; ++i) { |     for (u32 i = 0; i < command_header->num_buf_b_descriptors; ++i) { | ||||||
|         buffer_b_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>()); |         buffer_b_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>()); | ||||||
|     } |     } | ||||||
|     for (unsigned i = 0; i < command_header->num_buf_w_descriptors; ++i) { |     for (u32 i = 0; i < command_header->num_buf_w_descriptors; ++i) { | ||||||
|         buffer_w_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>()); |         buffer_w_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -148,14 +148,14 @@ void HLERequestContext::ParseCommandBuffer(const KHandleTable& handle_table, u32 | ||||||
|             IPC::CommandHeader::BufferDescriptorCFlag::OneDescriptor) { |             IPC::CommandHeader::BufferDescriptorCFlag::OneDescriptor) { | ||||||
|             buffer_c_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorC>()); |             buffer_c_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorC>()); | ||||||
|         } else { |         } else { | ||||||
|             unsigned num_buf_c_descriptors = |             u32 num_buf_c_descriptors = | ||||||
|                 static_cast<unsigned>(command_header->buf_c_descriptor_flags.Value()) - 2; |                 static_cast<u32>(command_header->buf_c_descriptor_flags.Value()) - 2; | ||||||
| 
 | 
 | ||||||
|             // This is used to detect possible underflows, in case something is broken
 |             // This is used to detect possible underflows, in case something is broken
 | ||||||
|             // with the two ifs above and the flags value is == 0 || == 1.
 |             // with the two ifs above and the flags value is == 0 || == 1.
 | ||||||
|             ASSERT(num_buf_c_descriptors < 14); |             ASSERT(num_buf_c_descriptors < 14); | ||||||
| 
 | 
 | ||||||
|             for (unsigned i = 0; i < num_buf_c_descriptors; ++i) { |             for (u32 i = 0; i < num_buf_c_descriptors; ++i) { | ||||||
|                 buffer_c_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorC>()); |                 buffer_c_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorC>()); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | @ -150,6 +150,10 @@ public: | ||||||
|         return command_header->type; |         return command_header->type; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     u64 GetPID() const { | ||||||
|  |         return pid; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     u32 GetDataPayloadOffset() const { |     u32 GetDataPayloadOffset() const { | ||||||
|         return data_payload_offset; |         return data_payload_offset; | ||||||
|     } |     } | ||||||
|  | @ -305,11 +309,12 @@ private: | ||||||
|     std::vector<IPC::BufferDescriptorABW> buffer_w_desciptors; |     std::vector<IPC::BufferDescriptorABW> buffer_w_desciptors; | ||||||
|     std::vector<IPC::BufferDescriptorC> buffer_c_desciptors; |     std::vector<IPC::BufferDescriptorC> buffer_c_desciptors; | ||||||
| 
 | 
 | ||||||
|  |     u32_le command{}; | ||||||
|  |     u64 pid{}; | ||||||
|     u32 data_payload_offset{}; |     u32 data_payload_offset{}; | ||||||
|     u32 handles_offset{}; |     u32 handles_offset{}; | ||||||
|     u32 domain_offset{}; |     u32 domain_offset{}; | ||||||
|     u32 data_size{}; |     u32 data_size{}; | ||||||
|     u32_le command{}; |  | ||||||
| 
 | 
 | ||||||
|     std::vector<std::shared_ptr<SessionRequestHandler>> domain_request_handlers; |     std::vector<std::shared_ptr<SessionRequestHandler>> domain_request_handlers; | ||||||
|     bool is_thread_waiting{}; |     bool is_thread_waiting{}; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 bunnei
						bunnei