CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/Core/HLE/HLEHelperThread.h
Views: 1401
1
// Copyright (c) 2014- PPSSPP Project.
2
3
// This program is free software: you can redistribute it and/or modify
4
// it under the terms of the GNU General Public License as published by
5
// the Free Software Foundation, version 2.0 or later versions.
6
7
// This program is distributed in the hope that it will be useful,
8
// but WITHOUT ANY WARRANTY; without even the implied warranty of
9
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
// GNU General Public License 2.0 for more details.
11
12
// A copy of the GPL 2.0 should have been included with the program.
13
// If not, see http://www.gnu.org/licenses/
14
15
// Official git repository and contact information can be found at
16
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
17
18
#pragma once
19
#include "Core/HLE/sceKernel.h"
20
21
class PointerWrap;
22
enum WaitType : int;
23
24
class HLEHelperThread {
25
public:
26
// For savestates.
27
HLEHelperThread();
28
HLEHelperThread(const char *threadName, const u32 instructions[], u32 instrCount, u32 prio, int stacksize);
29
HLEHelperThread(const char *threadName, const char *module, const char *func, u32 prio, int stacksize);
30
~HLEHelperThread();
31
void DoState(PointerWrap &p);
32
33
void Start(u32 a0, u32 a1);
34
void Terminate();
35
bool Stopped();
36
void ChangePriority(u32 prio);
37
void Resume(WaitType waitType, SceUID uid, int result);
38
39
// For savestates.
40
void Forget();
41
42
u32 Entry() {
43
return entry_;
44
}
45
46
private:
47
void AllocEntry(u32 size);
48
void Create(const char *threadName, u32 prio, int stacksize);
49
50
SceUID id_;
51
u32 entry_;
52
};
53
54