mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #70 from flerovii/nvdrv-close
nvdrv: stubbed Close(cmd 2)
This commit is contained in:
		
						commit
						8bff9c9152
					
				@ -48,6 +48,18 @@ void NVDRV::Ioctl(Kernel::HLERequestContext& ctx) {
 | 
				
			|||||||
    rb.Push(nv_result);
 | 
					    rb.Push(nv_result);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void NVDRV::Close(Kernel::HLERequestContext& ctx) {
 | 
				
			||||||
 | 
					    LOG_WARNING(Service, "(STUBBED) called");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    IPC::RequestParser rp{ctx};
 | 
				
			||||||
 | 
					    u32 fd = rp.Pop<u32>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    auto result = nvdrv->Close(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    IPC::RequestBuilder rb{ctx, 2};
 | 
				
			||||||
 | 
					    rb.Push(result);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void NVDRV::Initialize(Kernel::HLERequestContext& ctx) {
 | 
					void NVDRV::Initialize(Kernel::HLERequestContext& ctx) {
 | 
				
			||||||
    LOG_WARNING(Service, "(STUBBED) called");
 | 
					    LOG_WARNING(Service, "(STUBBED) called");
 | 
				
			||||||
    IPC::RequestBuilder rb{ctx, 3};
 | 
					    IPC::RequestBuilder rb{ctx, 3};
 | 
				
			||||||
@ -60,6 +72,7 @@ NVDRV::NVDRV(std::shared_ptr<Module> nvdrv, const char* name)
 | 
				
			|||||||
    static const FunctionInfo functions[] = {
 | 
					    static const FunctionInfo functions[] = {
 | 
				
			||||||
        {0, &NVDRV::Open, "Open"},
 | 
					        {0, &NVDRV::Open, "Open"},
 | 
				
			||||||
        {1, &NVDRV::Ioctl, "Ioctl"},
 | 
					        {1, &NVDRV::Ioctl, "Ioctl"},
 | 
				
			||||||
 | 
					        {2, &NVDRV::Close, "Close"},
 | 
				
			||||||
        {3, &NVDRV::Initialize, "Initialize"},
 | 
					        {3, &NVDRV::Initialize, "Initialize"},
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    RegisterHandlers(functions);
 | 
					    RegisterHandlers(functions);
 | 
				
			||||||
 | 
				
			|||||||
@ -20,6 +20,7 @@ public:
 | 
				
			|||||||
private:
 | 
					private:
 | 
				
			||||||
    void Open(Kernel::HLERequestContext& ctx);
 | 
					    void Open(Kernel::HLERequestContext& ctx);
 | 
				
			||||||
    void Ioctl(Kernel::HLERequestContext& ctx);
 | 
					    void Ioctl(Kernel::HLERequestContext& ctx);
 | 
				
			||||||
 | 
					    void Close(Kernel::HLERequestContext& ctx);
 | 
				
			||||||
    void Initialize(Kernel::HLERequestContext& ctx);
 | 
					    void Initialize(Kernel::HLERequestContext& ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::shared_ptr<Module> nvdrv;
 | 
					    std::shared_ptr<Module> nvdrv;
 | 
				
			||||||
 | 
				
			|||||||
@ -49,5 +49,15 @@ u32 Module::Ioctl(u32 fd, u32 command, const std::vector<u8>& input, std::vector
 | 
				
			|||||||
    return device->ioctl(command, input, output);
 | 
					    return device->ioctl(command, input, output);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ResultCode Module::Close(u32 fd) {
 | 
				
			||||||
 | 
					    auto itr = open_files.find(fd);
 | 
				
			||||||
 | 
					    ASSERT_MSG(itr != open_files.end(), "Tried to talk to an invalid device");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    open_files.erase(itr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TODO(flerovium): return correct result code if operation failed.
 | 
				
			||||||
 | 
					    return RESULT_SUCCESS;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace Nvidia
 | 
					} // namespace Nvidia
 | 
				
			||||||
} // namespace Service
 | 
					} // namespace Service
 | 
				
			||||||
 | 
				
			|||||||
@ -35,6 +35,8 @@ public:
 | 
				
			|||||||
    u32 Open(std::string device_name);
 | 
					    u32 Open(std::string device_name);
 | 
				
			||||||
    /// Sends an ioctl command to the specified file descriptor.
 | 
					    /// Sends an ioctl command to the specified file descriptor.
 | 
				
			||||||
    u32 Ioctl(u32 fd, u32 command, const std::vector<u8>& input, std::vector<u8>& output);
 | 
					    u32 Ioctl(u32 fd, u32 command, const std::vector<u8>& input, std::vector<u8>& output);
 | 
				
			||||||
 | 
					    /// Closes a device file descriptor and returns operation success.
 | 
				
			||||||
 | 
					    ResultCode Close(u32 fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    /// Id to use for the next open file descriptor.
 | 
					    /// Id to use for the next open file descriptor.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user