mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-05 22:47:03 +00:00
Remove thread_ctrl::atexit
It was only a workaround for poor C++11 thread_local support
This commit is contained in:
parent
f2229a5f53
commit
c5676e5649
4 changed files with 16 additions and 57 deletions
|
|
@ -4,39 +4,8 @@
|
|||
|
||||
#include "sys_net_.h"
|
||||
|
||||
|
||||
|
||||
LOG_CHANNEL(libnet);
|
||||
|
||||
struct sys_net_tls_data
|
||||
{
|
||||
be_t<s32> _errno;
|
||||
be_t<s32> _h_errno;
|
||||
char addr[16];
|
||||
};
|
||||
|
||||
// TODO
|
||||
thread_local vm::ptr<sys_net_tls_data> g_tls_net_data{};
|
||||
|
||||
static NEVER_INLINE vm::ptr<sys_net_tls_data> get_tls()
|
||||
{
|
||||
// Allocate if not initialized
|
||||
if (!g_tls_net_data)
|
||||
{
|
||||
g_tls_net_data.set(vm::alloc(sizeof(decltype(g_tls_net_data)::type), vm::main));
|
||||
|
||||
// Initial values
|
||||
g_tls_net_data->_errno = SYS_NET_EBUSY;
|
||||
|
||||
thread_ctrl::atexit([addr = g_tls_net_data.addr()]
|
||||
{
|
||||
vm::dealloc_verbose_nothrow(addr, vm::main);
|
||||
});
|
||||
}
|
||||
|
||||
return g_tls_net_data;
|
||||
}
|
||||
|
||||
s32 sys_net_accept(s32 s, vm::ptr<sys_net_sockaddr> addr, vm::ptr<u32> paddrlen)
|
||||
{
|
||||
libnet.todo("accept(s=%d, addr=*0x%x, paddrlen=*0x%x)", s, addr, paddrlen);
|
||||
|
|
@ -314,11 +283,12 @@ s32 sys_net_show_nameserver()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
vm::ptr<s32> _sys_net_errno_loc()
|
||||
vm::ptr<s32> _sys_net_errno_loc(ppu_thread& ppu)
|
||||
{
|
||||
libnet.warning("_sys_net_errno_loc()");
|
||||
|
||||
return get_tls().ptr(&sys_net_tls_data::_errno);
|
||||
// Return fake location from system TLS area
|
||||
return vm::cast(ppu.gpr[13] - 0x7030 + 0x2c);
|
||||
}
|
||||
|
||||
s32 sys_net_set_resolver_configurations()
|
||||
|
|
@ -388,11 +358,12 @@ s32 sys_net_finalize_network()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
vm::ptr<s32> _sys_net_h_errno_loc()
|
||||
vm::ptr<s32> _sys_net_h_errno_loc(ppu_thread& ppu)
|
||||
{
|
||||
libnet.warning("_sys_net_h_errno_loc()");
|
||||
|
||||
return get_tls().ptr(&sys_net_tls_data::_h_errno);
|
||||
// Return fake location from system TLS area
|
||||
return vm::cast(ppu.gpr[13] - 0x7030 + 0x28);
|
||||
}
|
||||
|
||||
s32 sys_net_set_netemu_test_param()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue