mirror of
https://github.com/RPCSX/rpcsx.git
synced 2025-12-06 07:12:14 +01:00
49 lines
959 B
C++
49 lines
959 B
C++
#pragma once
|
|
|
|
#include <vector>
|
|
#include <map>
|
|
#include "Utilities/mutex.h"
|
|
#include "Emu/Cell/PPUThread.h"
|
|
|
|
#include "nt_p2p_port.h"
|
|
|
|
struct base_network_thread
|
|
{
|
|
void add_ppu_to_awake(ppu_thread* ppu);
|
|
void del_ppu_to_awake(ppu_thread* ppu);
|
|
|
|
shared_mutex mutex_ppu_to_awake;
|
|
std::vector<ppu_thread*> ppu_to_awake;
|
|
|
|
void wake_threads();
|
|
};
|
|
|
|
struct network_thread : base_network_thread
|
|
{
|
|
shared_mutex mutex_thread_loop;
|
|
atomic_t<u32> num_polls = 0;
|
|
|
|
static constexpr auto thread_name = "Network Thread";
|
|
|
|
void operator()();
|
|
};
|
|
|
|
struct p2p_thread : base_network_thread
|
|
{
|
|
shared_mutex list_p2p_ports_mutex;
|
|
std::map<u16, nt_p2p_port> list_p2p_ports;
|
|
atomic_t<u32> num_p2p_ports = 0;
|
|
|
|
static constexpr auto thread_name = "Network P2P Thread";
|
|
|
|
p2p_thread();
|
|
|
|
void create_p2p_port(u16 p2p_port);
|
|
|
|
void bind_sce_np_port();
|
|
void operator()();
|
|
};
|
|
|
|
using network_context = named_thread<network_thread>;
|
|
using p2p_context = named_thread<p2p_thread>;
|