thread.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright 2014 Citra Emulator Project / PPSSPP Project
  2. // Licensed under GPLv2
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "common/common_types.h"
  6. #include "core/hle/kernel/kernel.h"
  7. class Thread;
  8. enum ThreadPriority {
  9. THREADPRIO_HIGHEST = 0,
  10. THREADPRIO_DEFAULT = 16,
  11. THREADPRIO_LOWEST = 31,
  12. };
  13. enum ThreadProcessorId {
  14. THREADPROCESSORID_0 = 0xFFFFFFFE,
  15. THREADPROCESSORID_1 = 0xFFFFFFFD,
  16. THREADPROCESSORID_ALL = 0xFFFFFFFC,
  17. };
  18. /// Creates a new thread - wrapper for external user
  19. Handle __KernelCreateThread(const char* name, u32 entry_point, s32 priority,
  20. s32 processor_id, u32 stack_top, int stack_size=Kernel::DEFAULT_STACK_SIZE);
  21. /// Sets up the primary application thread
  22. Handle __KernelSetupMainThread(s32 priority, int stack_size=Kernel::DEFAULT_STACK_SIZE);
  23. /// Reschedules to the next available thread (call after current thread is suspended)
  24. void __KernelReschedule(const char* reason);
  25. void __KernelThreadingInit();
  26. void __KernelThreadingShutdown();
  27. /// Put current thread in a wait state - on WaitSynchronization
  28. void __KernelWaitThread_Synchronization();