mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +00:00
move error_report to ErrorCodes.cpp
This commit is contained in:
parent
7369169331
commit
2ac171a30f
@ -172,6 +172,7 @@ target_link_libraries(rpcs3_emu
|
|||||||
|
|
||||||
# Cell
|
# Cell
|
||||||
target_sources(rpcs3_emu PRIVATE
|
target_sources(rpcs3_emu PRIVATE
|
||||||
|
Cell/ErrorCodes.cpp
|
||||||
Cell/MFC.cpp
|
Cell/MFC.cpp
|
||||||
Cell/PPUAnalyser.cpp
|
Cell/PPUAnalyser.cpp
|
||||||
Cell/PPUDisAsm.cpp
|
Cell/PPUDisAsm.cpp
|
||||||
|
91
rpcs3/Emu/Cell/ErrorCodes.cpp
Normal file
91
rpcs3/Emu/Cell/ErrorCodes.cpp
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
#include "ErrorCodes.h"
|
||||||
|
#include "PPUThread.h"
|
||||||
|
#include "SPUThread.h"
|
||||||
|
|
||||||
|
LOG_CHANNEL(sys_log, "SYS");
|
||||||
|
|
||||||
|
bool g_log_all_errors = false;
|
||||||
|
|
||||||
|
s32 error_code::error_report(s32 result, const logs::message* channel, const char* fmt, const fmt_type_info* sup, const u64* args)
|
||||||
|
{
|
||||||
|
static thread_local std::string g_tls_error_str;
|
||||||
|
static thread_local std::unordered_map<std::string, usz> g_tls_error_stats;
|
||||||
|
|
||||||
|
if (!channel)
|
||||||
|
{
|
||||||
|
channel = &sys_log.error;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sup && !args)
|
||||||
|
{
|
||||||
|
if (!fmt)
|
||||||
|
{
|
||||||
|
// Report and clean error state
|
||||||
|
for (auto&& pair : g_tls_error_stats)
|
||||||
|
{
|
||||||
|
if (pair.second > 3)
|
||||||
|
{
|
||||||
|
channel->operator()("Stat: %s [x%u]", pair.first, pair.second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_tls_error_stats.clear();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure(fmt);
|
||||||
|
|
||||||
|
const char* func = "Unknown function";
|
||||||
|
|
||||||
|
if (auto ppu = get_current_cpu_thread<ppu_thread>())
|
||||||
|
{
|
||||||
|
if (auto current = ppu->current_function)
|
||||||
|
{
|
||||||
|
func = current;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (auto spu = get_current_cpu_thread<spu_thread>())
|
||||||
|
{
|
||||||
|
if (auto current = spu->current_func; current && spu->start_time)
|
||||||
|
{
|
||||||
|
func = current;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format log message (use preallocated buffer)
|
||||||
|
g_tls_error_str.clear();
|
||||||
|
|
||||||
|
fmt::append(g_tls_error_str, "'%s' failed with 0x%08x", func, result);
|
||||||
|
|
||||||
|
// Add spacer between error and fmt if necessary
|
||||||
|
if (fmt[0] != ' ')
|
||||||
|
g_tls_error_str += " : ";
|
||||||
|
|
||||||
|
fmt::raw_append(g_tls_error_str, fmt, sup, args);
|
||||||
|
|
||||||
|
// Update stats and check log threshold
|
||||||
|
|
||||||
|
if (g_log_all_errors) [[unlikely]]
|
||||||
|
{
|
||||||
|
if (!g_tls_error_stats.empty())
|
||||||
|
{
|
||||||
|
// Report and clean error state
|
||||||
|
error_report(0, nullptr, nullptr, nullptr, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
channel->operator()("%s", g_tls_error_str);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const auto stat = ++g_tls_error_stats[g_tls_error_str];
|
||||||
|
|
||||||
|
if (stat <= 3)
|
||||||
|
{
|
||||||
|
channel->operator()("%s [%u]", g_tls_error_str, stat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
@ -67,8 +67,6 @@ LOG_CHANNEL(sys_log, "SYS");
|
|||||||
// Preallocate 32 MiB
|
// Preallocate 32 MiB
|
||||||
stx::manual_typemap<void, 0x20'00000, 128> g_fixed_typemap;
|
stx::manual_typemap<void, 0x20'00000, 128> g_fixed_typemap;
|
||||||
|
|
||||||
bool g_log_all_errors = false;
|
|
||||||
|
|
||||||
bool g_use_rtm = false;
|
bool g_use_rtm = false;
|
||||||
u64 g_rtm_tx_limit1 = 0;
|
u64 g_rtm_tx_limit1 = 0;
|
||||||
u64 g_rtm_tx_limit2 = 0;
|
u64 g_rtm_tx_limit2 = 0;
|
||||||
@ -3892,89 +3890,6 @@ std::string Emulator::GetFormattedTitle(double fps) const
|
|||||||
return rpcs3::get_formatted_title(title_data);
|
return rpcs3::get_formatted_title(title_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 error_code::error_report(s32 result, const logs::message* channel, const char* fmt, const fmt_type_info* sup, const u64* args)
|
|
||||||
{
|
|
||||||
static thread_local std::string g_tls_error_str;
|
|
||||||
static thread_local std::unordered_map<std::string, usz> g_tls_error_stats;
|
|
||||||
|
|
||||||
if (!channel)
|
|
||||||
{
|
|
||||||
channel = &sys_log.error;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!sup && !args)
|
|
||||||
{
|
|
||||||
if (!fmt)
|
|
||||||
{
|
|
||||||
// Report and clean error state
|
|
||||||
for (auto&& pair : g_tls_error_stats)
|
|
||||||
{
|
|
||||||
if (pair.second > 3)
|
|
||||||
{
|
|
||||||
channel->operator()("Stat: %s [x%u]", pair.first, pair.second);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
g_tls_error_stats.clear();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure(fmt);
|
|
||||||
|
|
||||||
const char* func = "Unknown function";
|
|
||||||
|
|
||||||
if (auto ppu = get_current_cpu_thread<ppu_thread>())
|
|
||||||
{
|
|
||||||
if (auto current = ppu->current_function)
|
|
||||||
{
|
|
||||||
func = current;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (auto spu = get_current_cpu_thread<spu_thread>())
|
|
||||||
{
|
|
||||||
if (auto current = spu->current_func; current && spu->start_time)
|
|
||||||
{
|
|
||||||
func = current;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Format log message (use preallocated buffer)
|
|
||||||
g_tls_error_str.clear();
|
|
||||||
|
|
||||||
fmt::append(g_tls_error_str, "'%s' failed with 0x%08x", func, result);
|
|
||||||
|
|
||||||
// Add spacer between error and fmt if necessary
|
|
||||||
if (fmt[0] != ' ')
|
|
||||||
g_tls_error_str += " : ";
|
|
||||||
|
|
||||||
fmt::raw_append(g_tls_error_str, fmt, sup, args);
|
|
||||||
|
|
||||||
// Update stats and check log threshold
|
|
||||||
|
|
||||||
if (g_log_all_errors) [[unlikely]]
|
|
||||||
{
|
|
||||||
if (!g_tls_error_stats.empty())
|
|
||||||
{
|
|
||||||
// Report and clean error state
|
|
||||||
error_report(0, nullptr, nullptr, nullptr, nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
channel->operator()("%s", g_tls_error_str);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
const auto stat = ++g_tls_error_stats[g_tls_error_str];
|
|
||||||
|
|
||||||
if (stat <= 3)
|
|
||||||
{
|
|
||||||
channel->operator()("%s [%u]", g_tls_error_str, stat);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Emulator::ConfigurePPUCache() const
|
void Emulator::ConfigurePPUCache() const
|
||||||
{
|
{
|
||||||
auto& _main = g_fxo->get<main_ppu_module<lv2_obj>>();
|
auto& _main = g_fxo->get<main_ppu_module<lv2_obj>>();
|
||||||
|
@ -468,8 +468,6 @@ public:
|
|||||||
|
|
||||||
extern Emulator Emu;
|
extern Emulator Emu;
|
||||||
|
|
||||||
extern bool g_log_all_errors;
|
|
||||||
|
|
||||||
extern bool g_use_rtm;
|
extern bool g_use_rtm;
|
||||||
extern u64 g_rtm_tx_limit1;
|
extern u64 g_rtm_tx_limit1;
|
||||||
extern u64 g_rtm_tx_limit2;
|
extern u64 g_rtm_tx_limit2;
|
||||||
|
@ -66,6 +66,7 @@
|
|||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Emu\cache_utils.cpp" />
|
<ClCompile Include="Emu\cache_utils.cpp" />
|
||||||
|
<ClCompile Include="Emu\Cell\ErrorCodes.cpp" />
|
||||||
<ClCompile Include="Emu\Cell\lv2\sys_game.cpp" />
|
<ClCompile Include="Emu\Cell\lv2\sys_game.cpp" />
|
||||||
<ClCompile Include="Emu\Cell\Modules\cellMusicSelectionContext.cpp" />
|
<ClCompile Include="Emu\Cell\Modules\cellMusicSelectionContext.cpp" />
|
||||||
<ClCompile Include="Emu\Cell\Modules\libfs_utility_init.cpp" />
|
<ClCompile Include="Emu\Cell\Modules\libfs_utility_init.cpp" />
|
||||||
|
@ -1327,6 +1327,9 @@
|
|||||||
<ClCompile Include="Emu\Audio\audio_utils.cpp">
|
<ClCompile Include="Emu\Audio\audio_utils.cpp">
|
||||||
<Filter>Emu\Audio</Filter>
|
<Filter>Emu\Audio</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="Emu\Cell\ErrorCodes.cpp">
|
||||||
|
<Filter>Emu\Cell</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Crypto\aes.h">
|
<ClInclude Include="Crypto\aes.h">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user