Nobodys perfect

This commit is contained in:
plutoo 2017-10-07 23:18:21 +02:00
parent 74b14f4c63
commit b82ad0b099
2 changed files with 28 additions and 35 deletions

View File

@ -13,12 +13,12 @@ void mutexLock(Mutex* m) {
u32 self = _GetTag();
u32 cur = __sync_val_compare_and_swap(&m->Tag, 0, self);
if (cur == 0) {
// We won the race!
return;
}
while (1) {
if (cur == 0) {
// We won the race!
return;
}
if ((cur &~ HAS_LISTENERS) == self) {
// Kernel assigned it to us!
return;
@ -39,11 +39,6 @@ void mutexLock(Mutex* m) {
}
cur = __sync_val_compare_and_swap(&m->Tag, 0, self);
if (cur == 0) {
// We won the race!
return;
}
}
}

View File

@ -7,36 +7,34 @@ Result fsInitialize() {
Result rc = smGetService(&g_fsHandle, "fsp-srv");
if (R_SUCCEEDED(rc)) {
IpcCommand c;
ipcInitialize(&c);
ipcSendPid(&c);
struct {
u64 magic;
u64 cmd_id;
u64 unk;
} *raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 1;
raw->unk = 0;
rc = ipcDispatch(g_fsHandle);
if (R_SUCCEEDED(rc)) {
IpcCommand c;
ipcInitialize(&c);
ipcSendPid(&c);
IpcCommandResponse r;
ipcParseResponse(&r);
struct {
u64 magic;
u64 cmd_id;
u64 unk;
} *raw;
u64 result;
} *resp = r.Raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 1;
raw->unk = 0;
rc = ipcDispatch(g_fsHandle);
if (R_SUCCEEDED(rc)) {
IpcCommandResponse r;
ipcParseResponse(&r);
struct {
u64 magic;
u64 result;
} *resp = r.Raw;
rc = resp->result;
}
rc = resp->result;
}
}