diff options
author | costan <costan@google.com> | 2018-03-16 10:06:35 -0700 |
---|---|---|
committer | Victor Costan <pwnall@chromium.org> | 2018-03-16 10:32:40 -0700 |
commit | 0fa5a4f7b1ad9dc16b705bcad1f3ca913f187325 (patch) | |
tree | 1e90dee838f0acc2c9d9ccb187f79700e83b4518 /helpers | |
parent | 8143c12f3fc483b1ba61cdce11f9c1faf6d01bea (diff) | |
download | leveldb-0fa5a4f7b1ad9dc16b705bcad1f3ca913f187325.tar.gz |
Extend thread safety annotations.
This CL makes it easier to reason about thread safety by:
1) Adding Clang thread safety annotations according to comments.
2) Expanding a couple of variable names, without adding extra lines of code.
3) Adding const in a couple of places.
4) Replacing an always-non-null const pointer with a reference.
5) Fixing style warnings in the modified files.
This CL does not annotate the DBImpl members that claim to be protected
by the instance mutex, but are accessed without the mutex being held.
Those members (and their unprotected accesses) will be addressed in
future CLs.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=189354657
Diffstat (limited to 'helpers')
-rw-r--r-- | helpers/memenv/memenv.cc | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/helpers/memenv/memenv.cc b/helpers/memenv/memenv.cc index 9a98884..ee7abd4 100644 --- a/helpers/memenv/memenv.cc +++ b/helpers/memenv/memenv.cc @@ -4,14 +4,17 @@ #include "helpers/memenv/memenv.h" +#include <string.h> + +#include <map> +#include <string> +#include <vector> + #include "leveldb/env.h" #include "leveldb/status.h" #include "port/port.h" +#include "port/thread_annotations.h" #include "util/mutexlock.h" -#include <map> -#include <string.h> -#include <string> -#include <vector> namespace leveldb { @@ -135,7 +138,7 @@ class FileState { void operator=(const FileState&); port::Mutex refs_mutex_; - int refs_; // Protected by refs_mutex_; + int refs_ GUARDED_BY(refs_mutex_); // The following fields are not protected by any mutex. They are only mutable // while the file is being written, and concurrent access is not allowed @@ -312,7 +315,8 @@ class InMemoryEnv : public EnvWrapper { return Status::OK(); } - void DeleteFileInternal(const std::string& fname) { + void DeleteFileInternal(const std::string& fname) + EXCLUSIVE_LOCKS_REQUIRED(mutex_) { if (file_map_.find(fname) == file_map_.end()) { return; } @@ -386,7 +390,7 @@ class InMemoryEnv : public EnvWrapper { // Map from filenames to FileState objects, representing a simple file system. typedef std::map<std::string, FileState*> FileSystem; port::Mutex mutex_; - FileSystem file_map_; // Protected by mutex_. + FileSystem file_map_ GUARDED_BY(mutex_); }; } // namespace |