diff options
| author | 2015-02-01 00:14:40 -0200 | |
|---|---|---|
| committer | 2015-02-02 15:37:09 -0200 | |
| commit | 88a4a808c688eeabb136e9b45223a0e9c95896bc (patch) | |
| tree | c4181a69ff882e1af1b7d65bf3596a6cb3dd88b9 /src/core | |
| parent | Kernel: Make WaitObjects share ownership of Threads waiting on them (diff) | |
| download | yuzu-88a4a808c688eeabb136e9b45223a0e9c95896bc.tar.gz yuzu-88a4a808c688eeabb136e9b45223a0e9c95896bc.tar.xz yuzu-88a4a808c688eeabb136e9b45223a0e9c95896bc.zip | |
Kernel: Stop creating useless Handles during object creation
They're finally unnecessary, and will stop cluttering the application's
handle table.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/kernel/address_arbiter.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/address_arbiter.h | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/event.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/event.h | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/mutex.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/mutex.h | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/semaphore.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/shared_memory.cpp | 8 | ||||
| -rw-r--r-- | src/core/hle/kernel/shared_memory.h | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/thread.cpp | 8 | ||||
| -rw-r--r-- | src/core/hle/kernel/timer.cpp | 7 | ||||
| -rw-r--r-- | src/core/hle/kernel/timer.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/apt_u.cpp | 8 | ||||
| -rw-r--r-- | src/core/hle/service/dsp_dsp.cpp | 3 | ||||
| -rw-r--r-- | src/core/hle/service/gsp_gpu.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/service/srv.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/svc.cpp | 18 |
18 files changed, 41 insertions, 57 deletions
diff --git a/src/core/hle/kernel/address_arbiter.cpp b/src/core/hle/kernel/address_arbiter.cpp index 2084f24cc..42f8ce2d9 100644 --- a/src/core/hle/kernel/address_arbiter.cpp +++ b/src/core/hle/kernel/address_arbiter.cpp | |||
| @@ -18,14 +18,12 @@ namespace Kernel { | |||
| 18 | AddressArbiter::AddressArbiter() {} | 18 | AddressArbiter::AddressArbiter() {} |
| 19 | AddressArbiter::~AddressArbiter() {} | 19 | AddressArbiter::~AddressArbiter() {} |
| 20 | 20 | ||
| 21 | ResultVal<SharedPtr<AddressArbiter>> AddressArbiter::Create(std::string name) { | 21 | SharedPtr<AddressArbiter> AddressArbiter::Create(std::string name) { |
| 22 | SharedPtr<AddressArbiter> address_arbiter(new AddressArbiter); | 22 | SharedPtr<AddressArbiter> address_arbiter(new AddressArbiter); |
| 23 | // TOOD(yuriks): Don't create Handle (see Thread::Create()) | ||
| 24 | CASCADE_RESULT(auto unused, Kernel::g_handle_table.Create(address_arbiter)); | ||
| 25 | 23 | ||
| 26 | address_arbiter->name = std::move(name); | 24 | address_arbiter->name = std::move(name); |
| 27 | 25 | ||
| 28 | return MakeResult<SharedPtr<AddressArbiter>>(std::move(address_arbiter)); | 26 | return address_arbiter; |
| 29 | } | 27 | } |
| 30 | 28 | ||
| 31 | ResultCode AddressArbiter::ArbitrateAddress(ArbitrationType type, VAddr address, s32 value, | 29 | ResultCode AddressArbiter::ArbitrateAddress(ArbitrationType type, VAddr address, s32 value, |
diff --git a/src/core/hle/kernel/address_arbiter.h b/src/core/hle/kernel/address_arbiter.h index a616d840f..8f6a1a8df 100644 --- a/src/core/hle/kernel/address_arbiter.h +++ b/src/core/hle/kernel/address_arbiter.h | |||
| @@ -34,7 +34,7 @@ public: | |||
| 34 | * @param name Optional name used for debugging. | 34 | * @param name Optional name used for debugging. |
| 35 | * @returns The created AddressArbiter. | 35 | * @returns The created AddressArbiter. |
| 36 | */ | 36 | */ |
| 37 | static ResultVal<SharedPtr<AddressArbiter>> Create(std::string name = "Unknown"); | 37 | static SharedPtr<AddressArbiter> Create(std::string name = "Unknown"); |
| 38 | 38 | ||
| 39 | std::string GetTypeName() const override { return "Arbiter"; } | 39 | std::string GetTypeName() const override { return "Arbiter"; } |
| 40 | std::string GetName() const override { return name; } | 40 | std::string GetName() const override { return name; } |
diff --git a/src/core/hle/kernel/event.cpp b/src/core/hle/kernel/event.cpp index 3796fbb74..898e1c98f 100644 --- a/src/core/hle/kernel/event.cpp +++ b/src/core/hle/kernel/event.cpp | |||
| @@ -17,16 +17,14 @@ namespace Kernel { | |||
| 17 | Event::Event() {} | 17 | Event::Event() {} |
| 18 | Event::~Event() {} | 18 | Event::~Event() {} |
| 19 | 19 | ||
| 20 | ResultVal<SharedPtr<Event>> Event::Create(ResetType reset_type, std::string name) { | 20 | SharedPtr<Event> Event::Create(ResetType reset_type, std::string name) { |
| 21 | SharedPtr<Event> evt(new Event); | 21 | SharedPtr<Event> evt(new Event); |
| 22 | // TOOD(yuriks): Don't create Handle (see Thread::Create()) | ||
| 23 | CASCADE_RESULT(auto unused, Kernel::g_handle_table.Create(evt)); | ||
| 24 | 22 | ||
| 25 | evt->signaled = false; | 23 | evt->signaled = false; |
| 26 | evt->reset_type = evt->intitial_reset_type = reset_type; | 24 | evt->reset_type = evt->intitial_reset_type = reset_type; |
| 27 | evt->name = std::move(name); | 25 | evt->name = std::move(name); |
| 28 | 26 | ||
| 29 | return MakeResult<SharedPtr<Event>>(evt); | 27 | return evt; |
| 30 | } | 28 | } |
| 31 | 29 | ||
| 32 | bool Event::ShouldWait() { | 30 | bool Event::ShouldWait() { |
diff --git a/src/core/hle/kernel/event.h b/src/core/hle/kernel/event.h index 6f88afb3e..fba960d2a 100644 --- a/src/core/hle/kernel/event.h +++ b/src/core/hle/kernel/event.h | |||
| @@ -18,7 +18,7 @@ public: | |||
| 18 | * @param reset_type ResetType describing how to create event | 18 | * @param reset_type ResetType describing how to create event |
| 19 | * @param name Optional name of event | 19 | * @param name Optional name of event |
| 20 | */ | 20 | */ |
| 21 | static ResultVal<SharedPtr<Event>> Create(ResetType reset_type, std::string name = "Unknown"); | 21 | static SharedPtr<Event> Create(ResetType reset_type, std::string name = "Unknown"); |
| 22 | 22 | ||
| 23 | std::string GetTypeName() const override { return "Event"; } | 23 | std::string GetTypeName() const override { return "Event"; } |
| 24 | std::string GetName() const override { return name; } | 24 | std::string GetName() const override { return name; } |
diff --git a/src/core/hle/kernel/mutex.cpp b/src/core/hle/kernel/mutex.cpp index 7c634f9bd..9f7166ca4 100644 --- a/src/core/hle/kernel/mutex.cpp +++ b/src/core/hle/kernel/mutex.cpp | |||
| @@ -41,10 +41,8 @@ void ReleaseThreadMutexes(Thread* thread) { | |||
| 41 | Mutex::Mutex() {} | 41 | Mutex::Mutex() {} |
| 42 | Mutex::~Mutex() {} | 42 | Mutex::~Mutex() {} |
| 43 | 43 | ||
| 44 | ResultVal<SharedPtr<Mutex>> Mutex::Create(bool initial_locked, std::string name) { | 44 | SharedPtr<Mutex> Mutex::Create(bool initial_locked, std::string name) { |
| 45 | SharedPtr<Mutex> mutex(new Mutex); | 45 | SharedPtr<Mutex> mutex(new Mutex); |
| 46 | // TOOD(yuriks): Don't create Handle (see Thread::Create()) | ||
| 47 | CASCADE_RESULT(auto unused, Kernel::g_handle_table.Create(mutex)); | ||
| 48 | 46 | ||
| 49 | mutex->initial_locked = initial_locked; | 47 | mutex->initial_locked = initial_locked; |
| 50 | mutex->locked = false; | 48 | mutex->locked = false; |
| @@ -55,7 +53,7 @@ ResultVal<SharedPtr<Mutex>> Mutex::Create(bool initial_locked, std::string name) | |||
| 55 | if (initial_locked) | 53 | if (initial_locked) |
| 56 | mutex->Acquire(); | 54 | mutex->Acquire(); |
| 57 | 55 | ||
| 58 | return MakeResult<SharedPtr<Mutex>>(mutex); | 56 | return mutex; |
| 59 | } | 57 | } |
| 60 | 58 | ||
| 61 | bool Mutex::ShouldWait() { | 59 | bool Mutex::ShouldWait() { |
diff --git a/src/core/hle/kernel/mutex.h b/src/core/hle/kernel/mutex.h index cdd79e265..548403614 100644 --- a/src/core/hle/kernel/mutex.h +++ b/src/core/hle/kernel/mutex.h | |||
| @@ -22,7 +22,7 @@ public: | |||
| 22 | * @param name Optional name of mutex | 22 | * @param name Optional name of mutex |
| 23 | * @return Pointer to new Mutex object | 23 | * @return Pointer to new Mutex object |
| 24 | */ | 24 | */ |
| 25 | static ResultVal<SharedPtr<Mutex>> Create(bool initial_locked, std::string name = "Unknown"); | 25 | static SharedPtr<Mutex> Create(bool initial_locked, std::string name = "Unknown"); |
| 26 | 26 | ||
| 27 | std::string GetTypeName() const override { return "Mutex"; } | 27 | std::string GetTypeName() const override { return "Mutex"; } |
| 28 | std::string GetName() const override { return name; } | 28 | std::string GetName() const override { return name; } |
diff --git a/src/core/hle/kernel/semaphore.cpp b/src/core/hle/kernel/semaphore.cpp index 234d60d85..c8cf8b9a2 100644 --- a/src/core/hle/kernel/semaphore.cpp +++ b/src/core/hle/kernel/semaphore.cpp | |||
| @@ -21,8 +21,6 @@ ResultVal<SharedPtr<Semaphore>> Semaphore::Create(s32 initial_count, s32 max_cou | |||
| 21 | ErrorSummary::WrongArgument, ErrorLevel::Permanent); | 21 | ErrorSummary::WrongArgument, ErrorLevel::Permanent); |
| 22 | 22 | ||
| 23 | SharedPtr<Semaphore> semaphore(new Semaphore); | 23 | SharedPtr<Semaphore> semaphore(new Semaphore); |
| 24 | // TOOD(yuriks): Don't create Handle (see Thread::Create()) | ||
| 25 | CASCADE_RESULT(auto unused, Kernel::g_handle_table.Create(semaphore)); | ||
| 26 | 24 | ||
| 27 | // When the semaphore is created, some slots are reserved for other threads, | 25 | // When the semaphore is created, some slots are reserved for other threads, |
| 28 | // and the rest is reserved for the caller thread | 26 | // and the rest is reserved for the caller thread |
diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index c429bb9b4..4211fcf04 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp | |||
| @@ -12,14 +12,12 @@ namespace Kernel { | |||
| 12 | SharedMemory::SharedMemory() {} | 12 | SharedMemory::SharedMemory() {} |
| 13 | SharedMemory::~SharedMemory() {} | 13 | SharedMemory::~SharedMemory() {} |
| 14 | 14 | ||
| 15 | ResultVal<SharedPtr<SharedMemory>> SharedMemory::Create(std::string name) { | 15 | SharedPtr<SharedMemory> SharedMemory::Create(std::string name) { |
| 16 | SharedPtr<SharedMemory> shared_memory(new SharedMemory); | 16 | SharedPtr<SharedMemory> shared_memory(new SharedMemory); |
| 17 | 17 | ||
| 18 | // TOOD(yuriks): Don't create Handle (see Thread::Create()) | ||
| 19 | CASCADE_RESULT(auto unused, Kernel::g_handle_table.Create(shared_memory)); | ||
| 20 | |||
| 21 | shared_memory->name = std::move(name); | 18 | shared_memory->name = std::move(name); |
| 22 | return MakeResult<SharedPtr<SharedMemory>>(std::move(shared_memory)); | 19 | |
| 20 | return shared_memory; | ||
| 23 | } | 21 | } |
| 24 | 22 | ||
| 25 | ResultCode SharedMemory::Map(VAddr address, MemoryPermission permissions, | 23 | ResultCode SharedMemory::Map(VAddr address, MemoryPermission permissions, |
diff --git a/src/core/hle/kernel/shared_memory.h b/src/core/hle/kernel/shared_memory.h index d9e741d20..5833b411c 100644 --- a/src/core/hle/kernel/shared_memory.h +++ b/src/core/hle/kernel/shared_memory.h | |||
| @@ -29,7 +29,7 @@ public: | |||
| 29 | * Creates a shared memory object | 29 | * Creates a shared memory object |
| 30 | * @param name Optional object name, used only for debugging purposes. | 30 | * @param name Optional object name, used only for debugging purposes. |
| 31 | */ | 31 | */ |
| 32 | static ResultVal<SharedPtr<SharedMemory>> Create(std::string name = "Unknown"); | 32 | static SharedPtr<SharedMemory> Create(std::string name = "Unknown"); |
| 33 | 33 | ||
| 34 | std::string GetTypeName() const override { return "SharedMemory"; } | 34 | std::string GetTypeName() const override { return "SharedMemory"; } |
| 35 | 35 | ||
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index f092916dd..3987f9608 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp | |||
| @@ -368,14 +368,6 @@ ResultVal<SharedPtr<Thread>> Thread::Create(std::string name, VAddr entry_point, | |||
| 368 | 368 | ||
| 369 | SharedPtr<Thread> thread(new Thread); | 369 | SharedPtr<Thread> thread(new Thread); |
| 370 | 370 | ||
| 371 | // TODO(yuriks): Thread requires a handle to be inserted into the various scheduling queues for | ||
| 372 | // the time being. Create a handle here, it will be copied to the handle field in | ||
| 373 | // the object and use by the rest of the code. This should be removed when other | ||
| 374 | // code doesn't rely on the handle anymore. | ||
| 375 | ResultVal<Handle> handle = Kernel::g_handle_table.Create(thread); | ||
| 376 | if (handle.Failed()) | ||
| 377 | return handle.Code(); | ||
| 378 | |||
| 379 | thread_list.push_back(thread); | 371 | thread_list.push_back(thread); |
| 380 | thread_ready_queue.prepare(priority); | 372 | thread_ready_queue.prepare(priority); |
| 381 | 373 | ||
diff --git a/src/core/hle/kernel/timer.cpp b/src/core/hle/kernel/timer.cpp index 7c3cdc0d0..4352fc99c 100644 --- a/src/core/hle/kernel/timer.cpp +++ b/src/core/hle/kernel/timer.cpp | |||
| @@ -20,10 +20,8 @@ static Kernel::HandleTable timer_callback_handle_table; | |||
| 20 | Timer::Timer() {} | 20 | Timer::Timer() {} |
| 21 | Timer::~Timer() {} | 21 | Timer::~Timer() {} |
| 22 | 22 | ||
| 23 | ResultVal<SharedPtr<Timer>> Timer::Create(ResetType reset_type, std::string name) { | 23 | SharedPtr<Timer> Timer::Create(ResetType reset_type, std::string name) { |
| 24 | SharedPtr<Timer> timer(new Timer); | 24 | SharedPtr<Timer> timer(new Timer); |
| 25 | // TOOD(yuriks): Don't create Handle (see Thread::Create()) | ||
| 26 | CASCADE_RESULT(auto unused, Kernel::g_handle_table.Create(timer)); | ||
| 27 | 25 | ||
| 28 | timer->reset_type = reset_type; | 26 | timer->reset_type = reset_type; |
| 29 | timer->signaled = false; | 27 | timer->signaled = false; |
| @@ -31,7 +29,8 @@ ResultVal<SharedPtr<Timer>> Timer::Create(ResetType reset_type, std::string name | |||
| 31 | timer->initial_delay = 0; | 29 | timer->initial_delay = 0; |
| 32 | timer->interval_delay = 0; | 30 | timer->interval_delay = 0; |
| 33 | timer->callback_handle = timer_callback_handle_table.Create(timer).MoveFrom(); | 31 | timer->callback_handle = timer_callback_handle_table.Create(timer).MoveFrom(); |
| 34 | return MakeResult<SharedPtr<Timer>>(timer); | 32 | |
| 33 | return timer; | ||
| 35 | } | 34 | } |
| 36 | 35 | ||
| 37 | bool Timer::ShouldWait() { | 36 | bool Timer::ShouldWait() { |
diff --git a/src/core/hle/kernel/timer.h b/src/core/hle/kernel/timer.h index e217d6dae..540e4e187 100644 --- a/src/core/hle/kernel/timer.h +++ b/src/core/hle/kernel/timer.h | |||
| @@ -19,7 +19,7 @@ public: | |||
| 19 | * @param name Optional name of timer | 19 | * @param name Optional name of timer |
| 20 | * @return The created Timer | 20 | * @return The created Timer |
| 21 | */ | 21 | */ |
| 22 | static ResultVal<SharedPtr<Timer>> Create(ResetType reset_type, std::string name = "Unknown"); | 22 | static SharedPtr<Timer> Create(ResetType reset_type, std::string name = "Unknown"); |
| 23 | 23 | ||
| 24 | std::string GetTypeName() const override { return "Timer"; } | 24 | std::string GetTypeName() const override { return "Timer"; } |
| 25 | std::string GetName() const override { return name; } | 25 | std::string GetName() const override { return name; } |
diff --git a/src/core/hle/service/apt_u.cpp b/src/core/hle/service/apt_u.cpp index 1e6f1f78c..ccfd04591 100644 --- a/src/core/hle/service/apt_u.cpp +++ b/src/core/hle/service/apt_u.cpp | |||
| @@ -69,8 +69,8 @@ void Initialize(Service::Interface* self) { | |||
| 69 | u32* cmd_buff = Kernel::GetCommandBuffer(); | 69 | u32* cmd_buff = Kernel::GetCommandBuffer(); |
| 70 | 70 | ||
| 71 | // TODO(bunnei): Check if these are created in Initialize or on APT process startup. | 71 | // TODO(bunnei): Check if these are created in Initialize or on APT process startup. |
| 72 | notification_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "APT_U:Notification").MoveFrom(); | 72 | notification_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "APT_U:Notification"); |
| 73 | pause_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "APT_U:Pause").MoveFrom(); | 73 | pause_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "APT_U:Pause"); |
| 74 | 74 | ||
| 75 | cmd_buff[3] = Kernel::g_handle_table.Create(notification_event).MoveFrom(); | 75 | cmd_buff[3] = Kernel::g_handle_table.Create(notification_event).MoveFrom(); |
| 76 | cmd_buff[4] = Kernel::g_handle_table.Create(pause_event).MoveFrom(); | 76 | cmd_buff[4] = Kernel::g_handle_table.Create(pause_event).MoveFrom(); |
| @@ -512,13 +512,13 @@ Interface::Interface() { | |||
| 512 | file.ReadBytes(shared_font.data(), (size_t)file.GetSize()); | 512 | file.ReadBytes(shared_font.data(), (size_t)file.GetSize()); |
| 513 | 513 | ||
| 514 | // Create shared font memory object | 514 | // Create shared font memory object |
| 515 | shared_font_mem = Kernel::SharedMemory::Create("APT_U:shared_font_mem").MoveFrom(); | 515 | shared_font_mem = Kernel::SharedMemory::Create("APT_U:shared_font_mem"); |
| 516 | } else { | 516 | } else { |
| 517 | LOG_WARNING(Service_APT, "Unable to load shared font: %s", filepath.c_str()); | 517 | LOG_WARNING(Service_APT, "Unable to load shared font: %s", filepath.c_str()); |
| 518 | shared_font_mem = nullptr; | 518 | shared_font_mem = nullptr; |
| 519 | } | 519 | } |
| 520 | 520 | ||
| 521 | lock = Kernel::Mutex::Create(false, "APT_U:Lock").MoveFrom(); | 521 | lock = Kernel::Mutex::Create(false, "APT_U:Lock"); |
| 522 | 522 | ||
| 523 | Register(FunctionTable); | 523 | Register(FunctionTable); |
| 524 | } | 524 | } |
diff --git a/src/core/hle/service/dsp_dsp.cpp b/src/core/hle/service/dsp_dsp.cpp index 7a18c1747..0f86894a6 100644 --- a/src/core/hle/service/dsp_dsp.cpp +++ b/src/core/hle/service/dsp_dsp.cpp | |||
| @@ -201,8 +201,7 @@ const Interface::FunctionInfo FunctionTable[] = { | |||
| 201 | // Interface class | 201 | // Interface class |
| 202 | 202 | ||
| 203 | Interface::Interface() { | 203 | Interface::Interface() { |
| 204 | semaphore_event = Kernel::Event::Create(RESETTYPE_ONESHOT, | 204 | semaphore_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "DSP_DSP::semaphore_event"); |
| 205 | "DSP_DSP::semaphore_event").MoveFrom(); | ||
| 206 | interrupt_event = nullptr; | 205 | interrupt_event = nullptr; |
| 207 | read_pipe_count = 0; | 206 | read_pipe_count = 0; |
| 208 | 207 | ||
diff --git a/src/core/hle/service/gsp_gpu.cpp b/src/core/hle/service/gsp_gpu.cpp index 936203318..495c117ee 100644 --- a/src/core/hle/service/gsp_gpu.cpp +++ b/src/core/hle/service/gsp_gpu.cpp | |||
| @@ -187,7 +187,7 @@ static void RegisterInterruptRelayQueue(Service::Interface* self) { | |||
| 187 | 187 | ||
| 188 | g_interrupt_event = Kernel::g_handle_table.Get<Kernel::Event>(cmd_buff[3]); | 188 | g_interrupt_event = Kernel::g_handle_table.Get<Kernel::Event>(cmd_buff[3]); |
| 189 | _assert_msg_(GSP, (g_interrupt_event != nullptr), "handle is not valid!"); | 189 | _assert_msg_(GSP, (g_interrupt_event != nullptr), "handle is not valid!"); |
| 190 | g_shared_memory = Kernel::SharedMemory::Create("GSPSharedMem").MoveFrom(); | 190 | g_shared_memory = Kernel::SharedMemory::Create("GSPSharedMem"); |
| 191 | 191 | ||
| 192 | Handle shmem_handle = Kernel::g_handle_table.Create(g_shared_memory).MoveFrom(); | 192 | Handle shmem_handle = Kernel::g_handle_table.Create(g_shared_memory).MoveFrom(); |
| 193 | 193 | ||
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index b6e4861d2..7cb01729e 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -124,14 +124,14 @@ void PadUpdateComplete() { | |||
| 124 | void HIDInit() { | 124 | void HIDInit() { |
| 125 | using namespace Kernel; | 125 | using namespace Kernel; |
| 126 | 126 | ||
| 127 | g_shared_mem = SharedMemory::Create("HID:SharedMem").MoveFrom(); | 127 | g_shared_mem = SharedMemory::Create("HID:SharedMem"); |
| 128 | 128 | ||
| 129 | // Create event handles | 129 | // Create event handles |
| 130 | g_event_pad_or_touch_1 = Event::Create(RESETTYPE_ONESHOT, "HID:EventPadOrTouch1").MoveFrom(); | 130 | g_event_pad_or_touch_1 = Event::Create(RESETTYPE_ONESHOT, "HID:EventPadOrTouch1"); |
| 131 | g_event_pad_or_touch_2 = Event::Create(RESETTYPE_ONESHOT, "HID:EventPadOrTouch2").MoveFrom(); | 131 | g_event_pad_or_touch_2 = Event::Create(RESETTYPE_ONESHOT, "HID:EventPadOrTouch2"); |
| 132 | g_event_accelerometer = Event::Create(RESETTYPE_ONESHOT, "HID:EventAccelerometer").MoveFrom(); | 132 | g_event_accelerometer = Event::Create(RESETTYPE_ONESHOT, "HID:EventAccelerometer"); |
| 133 | g_event_gyroscope = Event::Create(RESETTYPE_ONESHOT, "HID:EventGyroscope").MoveFrom(); | 133 | g_event_gyroscope = Event::Create(RESETTYPE_ONESHOT, "HID:EventGyroscope"); |
| 134 | g_event_debug_pad = Event::Create(RESETTYPE_ONESHOT, "HID:EventDebugPad").MoveFrom(); | 134 | g_event_debug_pad = Event::Create(RESETTYPE_ONESHOT, "HID:EventDebugPad"); |
| 135 | } | 135 | } |
| 136 | 136 | ||
| 137 | void HIDShutdown() { | 137 | void HIDShutdown() { |
diff --git a/src/core/hle/service/srv.cpp b/src/core/hle/service/srv.cpp index b140e9fe3..cc59a03ce 100644 --- a/src/core/hle/service/srv.cpp +++ b/src/core/hle/service/srv.cpp | |||
| @@ -23,7 +23,7 @@ static void GetProcSemaphore(Service::Interface* self) { | |||
| 23 | u32* cmd_buff = Kernel::GetCommandBuffer(); | 23 | u32* cmd_buff = Kernel::GetCommandBuffer(); |
| 24 | 24 | ||
| 25 | // TODO(bunnei): Change to a semaphore once these have been implemented | 25 | // TODO(bunnei): Change to a semaphore once these have been implemented |
| 26 | event_handle = Kernel::Event::Create(RESETTYPE_ONESHOT, "SRV:Event").MoveFrom(); | 26 | event_handle = Kernel::Event::Create(RESETTYPE_ONESHOT, "SRV:Event"); |
| 27 | event_handle->Clear(); | 27 | event_handle->Clear(); |
| 28 | 28 | ||
| 29 | cmd_buff[1] = 0; // No error | 29 | cmd_buff[1] = 0; // No error |
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 8bfa1428e..34a27917f 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp | |||
| @@ -261,7 +261,7 @@ static ResultCode WaitSynchronizationN(s32* out, Handle* handles, s32 handle_cou | |||
| 261 | static ResultCode CreateAddressArbiter(Handle* out_handle) { | 261 | static ResultCode CreateAddressArbiter(Handle* out_handle) { |
| 262 | using Kernel::AddressArbiter; | 262 | using Kernel::AddressArbiter; |
| 263 | 263 | ||
| 264 | CASCADE_RESULT(SharedPtr<AddressArbiter> arbiter, AddressArbiter::Create()); | 264 | SharedPtr<AddressArbiter> arbiter = AddressArbiter::Create(); |
| 265 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(arbiter))); | 265 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(arbiter))); |
| 266 | LOG_TRACE(Kernel_SVC, "returned handle=0x%08X", *out_handle); | 266 | LOG_TRACE(Kernel_SVC, "returned handle=0x%08X", *out_handle); |
| 267 | return RESULT_SUCCESS; | 267 | return RESULT_SUCCESS; |
| @@ -366,7 +366,7 @@ static ResultCode SetThreadPriority(Handle handle, s32 priority) { | |||
| 366 | static ResultCode CreateMutex(Handle* out_handle, u32 initial_locked) { | 366 | static ResultCode CreateMutex(Handle* out_handle, u32 initial_locked) { |
| 367 | using Kernel::Mutex; | 367 | using Kernel::Mutex; |
| 368 | 368 | ||
| 369 | CASCADE_RESULT(SharedPtr<Mutex> mutex, Mutex::Create(initial_locked != 0)); | 369 | SharedPtr<Mutex> mutex = Mutex::Create(initial_locked != 0); |
| 370 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(mutex))); | 370 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(mutex))); |
| 371 | 371 | ||
| 372 | LOG_TRACE(Kernel_SVC, "called initial_locked=%s : created handle=0x%08X", | 372 | LOG_TRACE(Kernel_SVC, "called initial_locked=%s : created handle=0x%08X", |
| @@ -434,7 +434,9 @@ static ResultCode QueryMemory(void* info, void* out, u32 addr) { | |||
| 434 | 434 | ||
| 435 | /// Create an event | 435 | /// Create an event |
| 436 | static ResultCode CreateEvent(Handle* out_handle, u32 reset_type) { | 436 | static ResultCode CreateEvent(Handle* out_handle, u32 reset_type) { |
| 437 | CASCADE_RESULT(auto evt, Kernel::Event::Create(static_cast<ResetType>(reset_type))); | 437 | using Kernel::Event; |
| 438 | |||
| 439 | SharedPtr<Event> evt = Kernel::Event::Create(static_cast<ResetType>(reset_type)); | ||
| 438 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(evt))); | 440 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(evt))); |
| 439 | 441 | ||
| 440 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", | 442 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", |
| @@ -451,9 +453,10 @@ static ResultCode DuplicateHandle(Handle* out, Handle handle) { | |||
| 451 | 453 | ||
| 452 | /// Signals an event | 454 | /// Signals an event |
| 453 | static ResultCode SignalEvent(Handle handle) { | 455 | static ResultCode SignalEvent(Handle handle) { |
| 456 | using Kernel::Event; | ||
| 454 | LOG_TRACE(Kernel_SVC, "called event=0x%08X", handle); | 457 | LOG_TRACE(Kernel_SVC, "called event=0x%08X", handle); |
| 455 | 458 | ||
| 456 | auto evt = Kernel::g_handle_table.Get<Kernel::Event>(handle); | 459 | SharedPtr<Event> evt = Kernel::g_handle_table.Get<Kernel::Event>(handle); |
| 457 | if (evt == nullptr) | 460 | if (evt == nullptr) |
| 458 | return ERR_INVALID_HANDLE; | 461 | return ERR_INVALID_HANDLE; |
| 459 | 462 | ||
| @@ -464,9 +467,10 @@ static ResultCode SignalEvent(Handle handle) { | |||
| 464 | 467 | ||
| 465 | /// Clears an event | 468 | /// Clears an event |
| 466 | static ResultCode ClearEvent(Handle handle) { | 469 | static ResultCode ClearEvent(Handle handle) { |
| 470 | using Kernel::Event; | ||
| 467 | LOG_TRACE(Kernel_SVC, "called event=0x%08X", handle); | 471 | LOG_TRACE(Kernel_SVC, "called event=0x%08X", handle); |
| 468 | 472 | ||
| 469 | auto evt = Kernel::g_handle_table.Get<Kernel::Event>(handle); | 473 | SharedPtr<Event> evt = Kernel::g_handle_table.Get<Kernel::Event>(handle); |
| 470 | if (evt == nullptr) | 474 | if (evt == nullptr) |
| 471 | return ERR_INVALID_HANDLE; | 475 | return ERR_INVALID_HANDLE; |
| 472 | 476 | ||
| @@ -478,7 +482,7 @@ static ResultCode ClearEvent(Handle handle) { | |||
| 478 | static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) { | 482 | static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) { |
| 479 | using Kernel::Timer; | 483 | using Kernel::Timer; |
| 480 | 484 | ||
| 481 | CASCADE_RESULT(auto timer, Timer::Create(static_cast<ResetType>(reset_type))); | 485 | SharedPtr<Timer> timer = Timer::Create(static_cast<ResetType>(reset_type)); |
| 482 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(timer))); | 486 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(timer))); |
| 483 | 487 | ||
| 484 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", | 488 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", |
| @@ -552,7 +556,7 @@ static ResultCode CreateMemoryBlock(Handle* out_handle, u32 addr, u32 size, u32 | |||
| 552 | using Kernel::SharedMemory; | 556 | using Kernel::SharedMemory; |
| 553 | // TODO(Subv): Implement this function | 557 | // TODO(Subv): Implement this function |
| 554 | 558 | ||
| 555 | CASCADE_RESULT(auto shared_memory, SharedMemory::Create()); | 559 | SharedPtr<SharedMemory> shared_memory = SharedMemory::Create(); |
| 556 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(shared_memory))); | 560 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(shared_memory))); |
| 557 | 561 | ||
| 558 | LOG_WARNING(Kernel_SVC, "(STUBBED) called addr=0x%08X", addr); | 562 | LOG_WARNING(Kernel_SVC, "(STUBBED) called addr=0x%08X", addr); |