From 9a789d4dc63b4c5feb053fbc0a04d1fb41fd3720 Mon Sep 17 00:00:00 2001 From: practicalswift Date: Mon, 8 Oct 2018 15:17:18 +0200 Subject: [PATCH] policy: Add Clang thread safety annotations for variables guarded by cs_feeEstimator --- src/policy/fees.h | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/policy/fees.h b/src/policy/fees.h index 90f159b48..d3deff9b9 100644 --- a/src/policy/fees.h +++ b/src/policy/fees.h @@ -228,10 +228,12 @@ public: unsigned int HighestTargetTracked(FeeEstimateHorizon horizon) const; private: - unsigned int nBestSeenHeight; - unsigned int firstRecordedHeight; - unsigned int historicalFirst; - unsigned int historicalBest; + mutable CCriticalSection cs_feeEstimator; + + unsigned int nBestSeenHeight GUARDED_BY(cs_feeEstimator); + unsigned int firstRecordedHeight GUARDED_BY(cs_feeEstimator); + unsigned int historicalFirst GUARDED_BY(cs_feeEstimator); + unsigned int historicalBest GUARDED_BY(cs_feeEstimator); struct TxStatsInfo { @@ -241,34 +243,32 @@ private: }; // map of txids to information about that transaction - std::map mapMemPoolTxs; + std::map mapMemPoolTxs GUARDED_BY(cs_feeEstimator); /** Classes to track historical data on transaction confirmations */ std::unique_ptr feeStats; std::unique_ptr shortStats; std::unique_ptr longStats; - unsigned int trackedTxs; - unsigned int untrackedTxs; + unsigned int trackedTxs GUARDED_BY(cs_feeEstimator); + unsigned int untrackedTxs GUARDED_BY(cs_feeEstimator); - std::vector buckets; // The upper-bound of the range for the bucket (inclusive) - std::map bucketMap; // Map of bucket upper-bound to index into all vectors by bucket - - mutable CCriticalSection cs_feeEstimator; + std::vector buckets GUARDED_BY(cs_feeEstimator); // The upper-bound of the range for the bucket (inclusive) + std::map bucketMap GUARDED_BY(cs_feeEstimator); // Map of bucket upper-bound to index into all vectors by bucket /** Process a transaction confirmed in a block*/ - bool processBlockTx(unsigned int nBlockHeight, const CTxMemPoolEntry* entry); + bool processBlockTx(unsigned int nBlockHeight, const CTxMemPoolEntry* entry) EXCLUSIVE_LOCKS_REQUIRED(cs_feeEstimator); /** Helper for estimateSmartFee */ - double estimateCombinedFee(unsigned int confTarget, double successThreshold, bool checkShorterHorizon, EstimationResult *result) const; + double estimateCombinedFee(unsigned int confTarget, double successThreshold, bool checkShorterHorizon, EstimationResult *result) const EXCLUSIVE_LOCKS_REQUIRED(cs_feeEstimator); /** Helper for estimateSmartFee */ - double estimateConservativeFee(unsigned int doubleTarget, EstimationResult *result) const; + double estimateConservativeFee(unsigned int doubleTarget, EstimationResult *result) const EXCLUSIVE_LOCKS_REQUIRED(cs_feeEstimator); /** Number of blocks of data recorded while fee estimates have been running */ - unsigned int BlockSpan() const; + unsigned int BlockSpan() const EXCLUSIVE_LOCKS_REQUIRED(cs_feeEstimator); /** Number of blocks of recorded fee estimate data represented in saved data file */ - unsigned int HistoricalBlockSpan() const; + unsigned int HistoricalBlockSpan() const EXCLUSIVE_LOCKS_REQUIRED(cs_feeEstimator); /** Calculation of highest target that reasonable estimate can be provided for */ - unsigned int MaxUsableEstimate() const; + unsigned int MaxUsableEstimate() const EXCLUSIVE_LOCKS_REQUIRED(cs_feeEstimator); }; class FeeFilterRounder