mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-05 14:37:08 +00:00
[rpcsx-os/orbis-kernel] random bugfixes
ipmi: fixed respond sync, get message, try get message, try send message event: detach event emitter from file signals: basic implementation linker: fixed zero symbol relocation, fixed exec relocation shared_cv/mutex: implement eintr response support shared_cv: fixed possible loop instead of wait ipmi: implement invoke async, respond async, get result, get client app id, client get name rpcsx-os: add safemode flag
This commit is contained in:
parent
8791312d4f
commit
65e653f5ef
81 changed files with 2586 additions and 761 deletions
|
|
@ -54,7 +54,20 @@ struct Stack {
|
|||
};
|
||||
|
||||
struct SigSet {
|
||||
ulong bits[2];
|
||||
static constexpr auto min = 1;
|
||||
static constexpr auto max = 128;
|
||||
|
||||
uint bits[4];
|
||||
|
||||
bool test(unsigned signal) const {
|
||||
return (bits[(signal - 1) >> 5] & (1 << ((signal - 1) & 31))) != 0;
|
||||
}
|
||||
void set(unsigned signal) {
|
||||
bits[(signal - 1) >> 5] |= (1 << ((signal - 1) & 31));
|
||||
}
|
||||
void clear(unsigned signal) {
|
||||
bits[(signal - 1) >> 5] &= ~(1 << ((signal - 1) & 31));
|
||||
}
|
||||
};
|
||||
|
||||
struct UContext {
|
||||
|
|
@ -67,4 +80,87 @@ struct UContext {
|
|||
sint spare[4];
|
||||
sint unk1[3];
|
||||
};
|
||||
|
||||
static_assert(sizeof(UContext) == 0x500);
|
||||
|
||||
|
||||
enum Signal {
|
||||
kSigHup = 1,
|
||||
kSigInt = 2,
|
||||
kSigQuit = 3,
|
||||
kSigIll = 4,
|
||||
kSigTrap = 5,
|
||||
kSigAbrt = 6,
|
||||
kSigEmt = 7,
|
||||
kSigFpe = 8,
|
||||
kSigKill = 9,
|
||||
kSigBus = 10,
|
||||
kSigSegv = 11,
|
||||
kSigSys = 12,
|
||||
kSigPipe = 13,
|
||||
kSigAlrm = 14,
|
||||
kSigUrg = 16,
|
||||
kSigStop = 17,
|
||||
kSigTstp = 18,
|
||||
kSigCont = 19,
|
||||
kSigChld = 20,
|
||||
kSigTtin = 21,
|
||||
kSigTtou = 22,
|
||||
kSigIo = 23,
|
||||
kSigXcpu = 24,
|
||||
kSigXfsz = 25,
|
||||
kSigVtalrm = 26,
|
||||
kSigProf = 27,
|
||||
kSigWinch = 28,
|
||||
kSigInfo = 29,
|
||||
kSigUsr1 = 30,
|
||||
kSigUsr2 = 31,
|
||||
kSigThr = 32,
|
||||
};
|
||||
|
||||
struct SigAction {
|
||||
ptr<void(int32_t, void *, void *)> handler;
|
||||
sint flags;
|
||||
SigSet mask;
|
||||
};
|
||||
|
||||
union SigVal {
|
||||
sint integer;
|
||||
ptr<void> pointer;
|
||||
};
|
||||
|
||||
struct SigInfo {
|
||||
sint signo;
|
||||
sint errno_;
|
||||
sint code;
|
||||
sint pid;
|
||||
slong uid;
|
||||
sint status;
|
||||
ptr<void> addr;
|
||||
SigVal value;
|
||||
|
||||
union {
|
||||
struct {
|
||||
sint trapno;
|
||||
} fault;
|
||||
|
||||
struct {
|
||||
sint timerid;
|
||||
sint overrun;
|
||||
} timer;
|
||||
|
||||
struct {
|
||||
sint mqd;
|
||||
} mesgq;
|
||||
|
||||
struct {
|
||||
slong band;
|
||||
} poll;
|
||||
|
||||
struct {
|
||||
slong spare1;
|
||||
sint spare2[7];
|
||||
} spare;
|
||||
} reason;
|
||||
};
|
||||
} // namespace orbis
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue