diff options
| author | bunnei <bunneidev@gmail.com> | 2018-02-13 22:21:17 -0500 | 
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2018-02-13 23:54:12 -0500 | 
| commit | d42e77797e83a6c1ed7291e532041c781881e853 (patch) | |
| tree | be74bc0db8056fc1f3ac7e16d5c7ed64456accad /src/core | |
| parent | 8f84665775ca7732b20505f5472d640f3eaa8c1e (diff) | |
nvdrv: Use ReadBuffer/WriteBuffer functions for Ioctl.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/service/nvdrv/interface.cpp | 22 | 
1 files changed, 5 insertions, 17 deletions
| diff --git a/src/core/hle/service/nvdrv/interface.cpp b/src/core/hle/service/nvdrv/interface.cpp index 367791da6..13d23291e 100644 --- a/src/core/hle/service/nvdrv/interface.cpp +++ b/src/core/hle/service/nvdrv/interface.cpp @@ -32,25 +32,13 @@ void NVDRV::Ioctl(Kernel::HLERequestContext& ctx) {      u32 fd = rp.Pop<u32>();      u32 command = rp.Pop<u32>(); +    std::vector<u8> output(ctx.GetWriteBufferSize()); +      IPC::ResponseBuilder rb{ctx, 3};      rb.Push(RESULT_SUCCESS); -    if (ctx.BufferDescriptorA()[0].Size() != 0) { -        auto input_buffer = ctx.BufferDescriptorA()[0]; -        auto output_buffer = ctx.BufferDescriptorB()[0]; -        std::vector<u8> input(input_buffer.Size()); -        std::vector<u8> output(output_buffer.Size()); -        Memory::ReadBlock(input_buffer.Address(), input.data(), input_buffer.Size()); -        rb.Push(nvdrv->Ioctl(fd, command, input, output)); -        Memory::WriteBlock(output_buffer.Address(), output.data(), output_buffer.Size()); -    } else { -        auto input_buffer = ctx.BufferDescriptorX()[0]; -        auto output_buffer = ctx.BufferDescriptorC()[0]; -        std::vector<u8> input(input_buffer.size); -        std::vector<u8> output(output_buffer.size); -        Memory::ReadBlock(input_buffer.Address(), input.data(), input_buffer.size); -        rb.Push(nvdrv->Ioctl(fd, command, input, output)); -        Memory::WriteBlock(output_buffer.Address(), output.data(), output_buffer.size); -    } +    rb.Push(nvdrv->Ioctl(fd, command, ctx.ReadBuffer(), output)); + +    ctx.WriteBuffer(output);  }  void NVDRV::Close(Kernel::HLERequestContext& ctx) { | 
