Add locking annotation for vNodes. vNodes is guarded by cs_vNodes.
This commit is contained in:
parent
63144335be
commit
eea02be70e
1 changed files with 13 additions and 2 deletions
15
src/net.h
15
src/net.h
|
@ -177,7 +177,18 @@ public:
|
||||||
CConnman(uint64_t seed0, uint64_t seed1);
|
CConnman(uint64_t seed0, uint64_t seed1);
|
||||||
~CConnman();
|
~CConnman();
|
||||||
bool Start(CScheduler& scheduler, const Options& options);
|
bool Start(CScheduler& scheduler, const Options& options);
|
||||||
void Stop();
|
|
||||||
|
// TODO: Remove NO_THREAD_SAFETY_ANALYSIS. Lock cs_vNodes before reading the variable vNodes.
|
||||||
|
//
|
||||||
|
// When removing NO_THREAD_SAFETY_ANALYSIS be aware of the following lock order requirements:
|
||||||
|
// * CheckForStaleTipAndEvictPeers locks cs_main before indirectly calling GetExtraOutboundCount
|
||||||
|
// which locks cs_vNodes.
|
||||||
|
// * ProcessMessage locks cs_main and g_cs_orphans before indirectly calling ForEachNode which
|
||||||
|
// locks cs_vNodes.
|
||||||
|
//
|
||||||
|
// Thus the implicit locking order requirement is: (1) cs_main, (2) g_cs_orphans, (3) cs_vNodes.
|
||||||
|
void Stop() NO_THREAD_SAFETY_ANALYSIS;
|
||||||
|
|
||||||
void Interrupt();
|
void Interrupt();
|
||||||
bool GetNetworkActive() const { return fNetworkActive; };
|
bool GetNetworkActive() const { return fNetworkActive; };
|
||||||
bool GetUseAddrmanOutgoing() const { return m_use_addrman_outgoing; };
|
bool GetUseAddrmanOutgoing() const { return m_use_addrman_outgoing; };
|
||||||
|
@ -418,7 +429,7 @@ private:
|
||||||
CCriticalSection cs_vOneShots;
|
CCriticalSection cs_vOneShots;
|
||||||
std::vector<std::string> vAddedNodes GUARDED_BY(cs_vAddedNodes);
|
std::vector<std::string> vAddedNodes GUARDED_BY(cs_vAddedNodes);
|
||||||
CCriticalSection cs_vAddedNodes;
|
CCriticalSection cs_vAddedNodes;
|
||||||
std::vector<CNode*> vNodes;
|
std::vector<CNode*> vNodes GUARDED_BY(cs_vNodes);
|
||||||
std::list<CNode*> vNodesDisconnected;
|
std::list<CNode*> vNodesDisconnected;
|
||||||
mutable CCriticalSection cs_vNodes;
|
mutable CCriticalSection cs_vNodes;
|
||||||
std::atomic<NodeId> nLastNodeId{0};
|
std::atomic<NodeId> nLastNodeId{0};
|
||||||
|
|
Loading…
Reference in a new issue