ir.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2015 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "core/hle/service/service.h"
  5. #include "core/hle/service/ir/ir.h"
  6. #include "core/hle/service/ir/ir_rst.h"
  7. #include "core/hle/service/ir/ir_u.h"
  8. #include "core/hle/service/ir/ir_user.h"
  9. #include "core/hle/kernel/event.h"
  10. #include "core/hle/kernel/shared_memory.h"
  11. namespace Service {
  12. namespace IR {
  13. static Kernel::SharedPtr<Kernel::Event> handle_event;
  14. static Kernel::SharedPtr<Kernel::SharedMemory> shared_memory;
  15. void GetHandles(Service::Interface* self) {
  16. u32* cmd_buff = Kernel::GetCommandBuffer();
  17. cmd_buff[1] = RESULT_SUCCESS.raw;
  18. cmd_buff[2] = 0x4000000;
  19. cmd_buff[3] = Kernel::g_handle_table.Create(Service::IR::shared_memory).MoveFrom();
  20. cmd_buff[4] = Kernel::g_handle_table.Create(Service::IR::handle_event).MoveFrom();
  21. }
  22. void Init() {
  23. using namespace Kernel;
  24. AddService(new IR_RST_Interface);
  25. AddService(new IR_U_Interface);
  26. AddService(new IR_User_Interface);
  27. using Kernel::MemoryPermission;
  28. shared_memory = SharedMemory::Create(0x1000, Kernel::MemoryPermission::ReadWrite,
  29. Kernel::MemoryPermission::ReadWrite, "IR:SharedMemory");
  30. // Create event handle(s)
  31. handle_event = Event::Create(RESETTYPE_ONESHOT, "IR:HandleEvent");
  32. }
  33. void Shutdown() {
  34. shared_memory = nullptr;
  35. handle_event = nullptr;
  36. }
  37. } // namespace IR
  38. } // namespace Service