message: util/system.cpp: add thread safety annotations for dir_locks
diff: // Distributed under the MIT software license, see the accompanying
  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
  +#include <sync.h>
  #include <util/system.h>
  #include <chainparamsbase.h>
  @@ -76,18 +77,18 @@ const char * const BITCOIN_CONF_FILENAME = "peercoin.conf";
  ArgsManager gArgs;
  +/** Mutex to protect dir_locks. */
  +static Mutex cs_dir_locks;
  /** A map that contains all the currently held directory locks. After
  * successful locking, these will be held here until the global destructor
  * cleans them up and thus automatically unlocks them, or ReleaseDirectoryLocks
  * is called.
  */
  -static std::map<std::string, std::unique_ptr<fsbridge::FileLock>> dir_locks;
  -/** Mutex to protect dir_locks. */
  -static std::mutex cs_dir_locks;
  +static std::map<std::string, std::unique_ptr<fsbridge::FileLock>> dir_locks GUARDED_BY(cs_dir_locks);
  bool LockDirectory(const fs::path& directory, const std::string lockfile_name, bool probe_only)
  {
  - std::lock_guard<std::mutex> ulock(cs_dir_locks);
  + LOCK(cs_dir_locks);
  fs::path pathLockFile = directory / lockfile_name;
  // If a lock for this directory already exists in the map, don't try to re-lock it
  @@ -111,13 +112,13 @@ bool LockDirectory(const fs::path& directory, const std::string lockfile_name, b
  void UnlockDirectory(const fs::path& directory, const std::string& lockfile_name)
  {
  - std::lock_guard<std::mutex> lock(cs_dir_locks);
  + LOCK(cs_dir_locks);
  dir_locks.erase((directory / lockfile_name).string());
  }
  void ReleaseDirectoryLocks()
  {
  - std::lock_guard<std::mutex> ulock(cs_dir_locks);
  + LOCK(cs_dir_locks);
  dir_locks.clear();
  }
  