mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-04-29 07:14:20 -06:00
rudp status
This commit is contained in:
parent
05d77da944
commit
22e805d215
@ -1,13 +1,33 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include <atomic>
|
||||
#include <cstring>
|
||||
#include <mutex>
|
||||
#include "common/logging/log.h"
|
||||
#include "core/libraries/error_codes.h"
|
||||
#include "core/libraries/libs.h"
|
||||
#include "core/libraries/rudp/rudp.h"
|
||||
#include "core/libraries/rudp/rudp_error.h"
|
||||
|
||||
namespace Libraries::Rudp {
|
||||
|
||||
static OrbisRudpStatus g_rudpStatusInternal = {0};
|
||||
|
||||
void* g_RudpContext = nullptr;
|
||||
|
||||
struct RudpInternalState {
|
||||
std::atomic<s32> current_contexts{0};
|
||||
std::atomic<s32> allocs{0};
|
||||
std::atomic<s32> frees{0};
|
||||
std::atomic<s32> mem_current{0};
|
||||
std::atomic<s32> mem_peak{0};
|
||||
};
|
||||
static RudpInternalState g_state;
|
||||
|
||||
std::recursive_mutex g_RudpMutex;
|
||||
bool g_isRudpInitialized = false;
|
||||
|
||||
s32 PS4_SYSV_ABI sceRudpAccept() {
|
||||
LOG_ERROR(Lib_Rudp, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
@ -88,8 +108,33 @@ s32 PS4_SYSV_ABI sceRudpGetSizeWritable() {
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceRudpGetStatus() {
|
||||
LOG_ERROR(Lib_Rudp, "(STUBBED) called");
|
||||
s32 Rudp_GetActiveContexts() {
|
||||
return g_state.current_contexts.load();
|
||||
}
|
||||
|
||||
void Rudp_GetMemoryStats(s32* allocs, s32* frees, s32* memCurr, s32* memPeak) {
|
||||
*allocs = g_state.allocs.load();
|
||||
*frees = g_state.frees.load();
|
||||
*memCurr = g_state.mem_current.load();
|
||||
*memPeak = g_state.mem_peak.load();
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceRudpGetStatus(OrbisRudpStatus* status, size_t statusSize) {
|
||||
std::lock_guard lock(g_RudpMutex);
|
||||
|
||||
if (!g_isRudpInitialized) {
|
||||
return ORBIS_RUDP_ERROR_UNINITIALIZED;
|
||||
}
|
||||
|
||||
if (status == nullptr || (statusSize - 1) >= sizeof(OrbisRudpStatus)) {
|
||||
return ORBIS_RUDP_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
std::memcpy(status, &g_rudpStatusInternal, statusSize);
|
||||
|
||||
status->currentContexts = Rudp_GetActiveContexts();
|
||||
Rudp_GetMemoryStats(&status->allocs, &status->frees, &status->memCurrent, &status->memPeak);
|
||||
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
|
||||
@ -4,12 +4,78 @@
|
||||
#pragma once
|
||||
|
||||
#include "common/types.h"
|
||||
#include <sys/types.h>
|
||||
#include <cstddef>
|
||||
|
||||
namespace Core::Loader {
|
||||
class SymbolsResolver;
|
||||
}
|
||||
|
||||
namespace Libraries::Rudp {
|
||||
struct OrbisRudpStatus {
|
||||
s64 sentUdpBytes;
|
||||
s64 rcvdUdpBytes;
|
||||
s32 sentUdpPackets;
|
||||
s32 rcvdUdpPackets;
|
||||
|
||||
s64 sentUserBytes;
|
||||
s32 sentUserPackets;
|
||||
s32 sentLatencyCriticalPackets;
|
||||
|
||||
s64 rcvdUserBytes;
|
||||
s32 rcvdUserPackets;
|
||||
s32 rcvdLatencyCriticalPackets;
|
||||
|
||||
s32 sentSynPackets;
|
||||
s32 rcvdSynPackets;
|
||||
s32 sentUsrPackets;
|
||||
s32 rcvdUsrPackets;
|
||||
s32 sentPrbPackets;
|
||||
s32 rcvdPrbPackets;
|
||||
s32 sentRstPackets;
|
||||
s32 rcvdRstPackets;
|
||||
|
||||
s32 lostPackets;
|
||||
s32 retransmittedPackets;
|
||||
s32 reorderedPackets;
|
||||
|
||||
s32 currentContexts;
|
||||
|
||||
s64 sentQualityLevel1Bytes;
|
||||
s64 rcvdQualityLevel1Bytes;
|
||||
s32 sentQualityLevel1Packets;
|
||||
s32 rcvdQualityLevel1Packets;
|
||||
|
||||
s64 sentQualityLevel2Bytes;
|
||||
s64 rcvdQualityLevel2Bytes;
|
||||
s32 sentQualityLevel2Packets;
|
||||
s32 rcvdQualityLevel2Packets;
|
||||
|
||||
s64 sentQualityLevel3Bytes;
|
||||
s64 rcvdQualityLevel3Bytes;
|
||||
s32 sentQualityLevel3Packets;
|
||||
s32 rcvdQualityLevel3Packets;
|
||||
|
||||
s64 sentQualityLevel4Bytes;
|
||||
s64 rcvdQualityLevel4Bytes;
|
||||
s32 sentQualityLevel4Packets;
|
||||
s32 rcvdQualityLevel4Packets;
|
||||
|
||||
s32 allocs;
|
||||
s32 frees;
|
||||
s32 memCurrent;
|
||||
s32 memPeak;
|
||||
|
||||
s32 establishedConnections;
|
||||
s32 failedConnections;
|
||||
|
||||
s32 failedConnectionsReset;
|
||||
s32 failedConnectionsRefused;
|
||||
s32 failedConnectionsTimeout;
|
||||
s32 failedConnectionsVersionMismatch;
|
||||
s32 failedConnectionsTransportTypeMismatch;
|
||||
s32 failedConnectionsQualityLevelMismatch;
|
||||
};
|
||||
|
||||
s32 PS4_SYSV_ABI sceRudpAccept();
|
||||
s32 PS4_SYSV_ABI sceRudpActivate();
|
||||
@ -27,7 +93,7 @@ s32 PS4_SYSV_ABI sceRudpGetOption();
|
||||
s32 PS4_SYSV_ABI sceRudpGetRemoteInfo();
|
||||
s32 PS4_SYSV_ABI sceRudpGetSizeReadable();
|
||||
s32 PS4_SYSV_ABI sceRudpGetSizeWritable();
|
||||
s32 PS4_SYSV_ABI sceRudpGetStatus();
|
||||
s32 PS4_SYSV_ABI sceRudpGetStatus(OrbisRudpStatus* status, size_t statusSize);
|
||||
s32 PS4_SYSV_ABI sceRudpInit();
|
||||
s32 PS4_SYSV_ABI sceRudpInitiate();
|
||||
s32 PS4_SYSV_ABI sceRudpListen();
|
||||
|
||||
9
src/core/libraries/rudp/rudp_error.h
Normal file
9
src/core/libraries/rudp/rudp_error.h
Normal file
@ -0,0 +1,9 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/libraries/error_codes.h"
|
||||
|
||||
constexpr int ORBIS_RUDP_ERROR_UNINITIALIZED = 0x80770001;
|
||||
constexpr int ORBIS_RUDP_ERROR_INVALID_ARGUMENT = 0x80770004;
|
||||
Loading…
Reference in New Issue
Block a user