mirror of https://github.com/RPCS3/rpcs3.git
Move sys_process_exit
This commit is contained in:
parent
01ffaab3e0
commit
669b1385cc
|
@ -21,6 +21,23 @@ s64 sys_time_get_system_time()
|
||||||
return get_system_time();
|
return get_system_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s32 sys_process_exit(ppu_thread& ppu, s32 status)
|
||||||
|
{
|
||||||
|
vm::temporary_unlock(ppu);
|
||||||
|
|
||||||
|
sysPrxForUser.warning("sys_process_exit(status=0x%x)", status);
|
||||||
|
|
||||||
|
Emu.CallAfter([]()
|
||||||
|
{
|
||||||
|
sysPrxForUser.success("Process finished");
|
||||||
|
Emu.Stop();
|
||||||
|
});
|
||||||
|
|
||||||
|
thread_ctrl::eternalize();
|
||||||
|
|
||||||
|
return CELL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
s64 _sys_process_atexitspawn()
|
s64 _sys_process_atexitspawn()
|
||||||
{
|
{
|
||||||
sysPrxForUser.todo("_sys_process_atexitspawn()");
|
sysPrxForUser.todo("_sys_process_atexitspawn()");
|
||||||
|
@ -236,7 +253,6 @@ DECLARE(ppu_module_manager::sysPrxForUser)("sysPrxForUser", []()
|
||||||
|
|
||||||
REG_FUNC(sysPrxForUser, sys_time_get_system_time);
|
REG_FUNC(sysPrxForUser, sys_time_get_system_time);
|
||||||
|
|
||||||
// TODO: split syscalls and liblv2 functions
|
|
||||||
REG_FUNC(sysPrxForUser, sys_process_exit);
|
REG_FUNC(sysPrxForUser, sys_process_exit);
|
||||||
REG_FUNC(sysPrxForUser, _sys_process_atexitspawn);
|
REG_FUNC(sysPrxForUser, _sys_process_atexitspawn);
|
||||||
REG_FUNC(sysPrxForUser, _sys_process_at_Exitspawn);
|
REG_FUNC(sysPrxForUser, _sys_process_at_Exitspawn);
|
||||||
|
|
|
@ -7,7 +7,6 @@ extern std::string ppu_get_syscall_name(u64 code)
|
||||||
{
|
{
|
||||||
case 1: return "sys_process_getpid";
|
case 1: return "sys_process_getpid";
|
||||||
case 2: return "sys_process_wait_for_child";
|
case 2: return "sys_process_wait_for_child";
|
||||||
case 3: return "sys_process_exit";
|
|
||||||
case 4: return "sys_process_get_status";
|
case 4: return "sys_process_get_status";
|
||||||
case 5: return "sys_process_detach_child";
|
case 5: return "sys_process_detach_child";
|
||||||
case 12: return "sys_process_get_number_of_object";
|
case 12: return "sys_process_get_number_of_object";
|
||||||
|
@ -16,10 +15,10 @@ extern std::string ppu_get_syscall_name(u64 code)
|
||||||
case 18: return "sys_process_getppid";
|
case 18: return "sys_process_getppid";
|
||||||
case 19: return "sys_process_kill";
|
case 19: return "sys_process_kill";
|
||||||
case 21: return "_sys_process_spawn";
|
case 21: return "_sys_process_spawn";
|
||||||
case 22: return "sys_process_exit";
|
case 22: return "_sys_process_exit";
|
||||||
case 23: return "sys_process_wait_for_child2";
|
case 23: return "sys_process_wait_for_child2";
|
||||||
case 25: return "sys_process_get_sdk_version";
|
case 25: return "sys_process_get_sdk_version";
|
||||||
case 26: return "_sys_process_exit";
|
case 26: return "_sys_process_exit2";
|
||||||
case 28: return "_sys_process_get_number_of_object";
|
case 28: return "_sys_process_get_number_of_object";
|
||||||
case 29: return "sys_process_get_id";
|
case 29: return "sys_process_get_id";
|
||||||
case 30: return "_sys_process_get_paramsfo";
|
case 30: return "_sys_process_get_paramsfo";
|
||||||
|
|
|
@ -76,11 +76,11 @@ const std::array<ppu_function_t, 1024> s_ppu_syscall_table
|
||||||
BIND_FUNC(sys_process_kill), //19 (0x013)
|
BIND_FUNC(sys_process_kill), //19 (0x013)
|
||||||
null_func, //20 (0x014) UNS
|
null_func, //20 (0x014) UNS
|
||||||
null_func,//BIND_FUNC(_sys_process_spawn), //21 (0x015) DBG
|
null_func,//BIND_FUNC(_sys_process_spawn), //21 (0x015) DBG
|
||||||
null_func,//BIND_FUNC(sys_process_exit), //22 (0x016)
|
BIND_FUNC(_sys_process_exit), //22 (0x016)
|
||||||
BIND_FUNC(sys_process_wait_for_child2), //23 (0x017) DBG
|
BIND_FUNC(sys_process_wait_for_child2), //23 (0x017) DBG
|
||||||
null_func,//BIND_FUNC(), //24 (0x018) DBG
|
null_func,//BIND_FUNC(), //24 (0x018) DBG
|
||||||
BIND_FUNC(sys_process_get_sdk_version), //25 (0x019)
|
BIND_FUNC(sys_process_get_sdk_version), //25 (0x019)
|
||||||
null_func,//BIND_FUNC(_sys_process_exit), //26 (0x01A)
|
BIND_FUNC(_sys_process_exit2), //26 (0x01A)
|
||||||
null_func,//BIND_FUNC(), //27 (0x01B) DBG
|
null_func,//BIND_FUNC(), //27 (0x01B) DBG
|
||||||
null_func,//BIND_FUNC(_sys_process_get_number_of_object)//28 (0x01C) ROOT
|
null_func,//BIND_FUNC(_sys_process_get_number_of_object)//28 (0x01C) ROOT
|
||||||
BIND_FUNC(sys_process_get_id), //29 (0x01D) ROOT
|
BIND_FUNC(sys_process_get_id), //29 (0x01D) ROOT
|
||||||
|
|
|
@ -46,23 +46,6 @@ s32 sys_process_getppid()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 sys_process_exit(ppu_thread& ppu, s32 status)
|
|
||||||
{
|
|
||||||
vm::temporary_unlock(ppu);
|
|
||||||
|
|
||||||
sys_process.warning("sys_process_exit(status=0x%x)", status);
|
|
||||||
|
|
||||||
Emu.CallAfter([]()
|
|
||||||
{
|
|
||||||
sys_process.success("Process finished");
|
|
||||||
Emu.Stop();
|
|
||||||
});
|
|
||||||
|
|
||||||
thread_ctrl::eternalize();
|
|
||||||
|
|
||||||
return CELL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T, typename Get>
|
template <typename T, typename Get>
|
||||||
u32 idm_get_count()
|
u32 idm_get_count()
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,10 +37,9 @@ s32 _sys_process_get_paramsfo(vm::ps3::ptr<char> buffer);
|
||||||
s32 sys_process_get_sdk_version(u32 pid, vm::ps3::ptr<s32> version);
|
s32 sys_process_get_sdk_version(u32 pid, vm::ps3::ptr<s32> version);
|
||||||
s32 sys_process_get_status(u64 unk);
|
s32 sys_process_get_status(u64 unk);
|
||||||
s32 sys_process_is_spu_lock_line_reservation_address(u32 addr, u64 flags);
|
s32 sys_process_is_spu_lock_line_reservation_address(u32 addr, u64 flags);
|
||||||
s32 sys_process_exit(ppu_thread& ppu, s32 errorcode);
|
s32 _sys_process_exit(ppu_thread& ppu, s32 exitcode, u32 arg2, u32 arg3);
|
||||||
|
s32 _sys_process_exit2(ppu_thread& ppu, s32 exitcode, u32 arg2, u32 arg3, u32 arg4);
|
||||||
s32 sys_process_kill(u32 pid);
|
s32 sys_process_kill(u32 pid);
|
||||||
s32 sys_process_wait_for_child(u32 pid, vm::ps3::ptr<u32> status, u64 unk);
|
s32 sys_process_wait_for_child(u32 pid, vm::ps3::ptr<u32> status, u64 unk);
|
||||||
s32 sys_process_wait_for_child2(u64 unk1, u64 unk2, u64 unk3, u64 unk4, u64 unk5, u64 unk6);
|
s32 sys_process_wait_for_child2(u64 unk1, u64 unk2, u64 unk3, u64 unk4, u64 unk5, u64 unk6);
|
||||||
s32 sys_process_detach_child(u64 unk);
|
s32 sys_process_detach_child(u64 unk);
|
||||||
void sys_game_process_exitspawn(vm::ps3::cptr<char> path, u32 argv_addr, u32 envp_addr, u32 data_addr, u32 data_size, u32 prio, u64 flags);
|
|
||||||
void sys_game_process_exitspawn2(vm::ps3::cptr<char> path, u32 argv_addr, u32 envp_addr, u32 data_addr, u32 data_size, u32 prio, u64 flags);
|
|
||||||
|
|
Loading…
Reference in New Issue