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/hle/kernel | |
| 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/hle/kernel')
| -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 |
12 files changed, 17 insertions, 36 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; } |