leveldb
Public Member Functions | Private Member Functions | Private Attributes | List of all members
leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter Class Reference

Public Member Functions

 MmapLimiter ()
 
bool Acquire ()
 
void Release ()
 

Private Member Functions

intptr_t GetAllowed () const
 
void SetAllowed (intptr_t v)
 
 MmapLimiter (const MmapLimiter &)
 
void operator= (const MmapLimiter &)
 

Private Attributes

port::Mutex mu_
 
port::AtomicPointer allowed_
 

Detailed Description

Definition at line 95 of file env_posix.cc.

Constructor & Destructor Documentation

§ MmapLimiter() [1/2]

leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter::MmapLimiter ( )
inline

Definition at line 98 of file env_posix.cc.

98  {
99  SetAllowed(sizeof(void*) >= 8 ? 1000 : 0);
100  }

§ MmapLimiter() [2/2]

leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter::MmapLimiter ( const MmapLimiter )
private

Member Function Documentation

§ Acquire()

bool leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter::Acquire ( )
inline

Definition at line 104 of file env_posix.cc.

104  {
105  if (GetAllowed() <= 0) {
106  return false;
107  }
108  MutexLock l(&mu_);
109  intptr_t x = GetAllowed();
110  if (x <= 0) {
111  return false;
112  } else {
113  SetAllowed(x - 1);
114  return true;
115  }
116  }

§ GetAllowed()

intptr_t leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter::GetAllowed ( ) const
inlineprivate

Definition at line 128 of file env_posix.cc.

128  {
129  return reinterpret_cast<intptr_t>(allowed_.Acquire_Load());
130  }

§ operator=()

void leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter::operator= ( const MmapLimiter )
private

§ Release()

void leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter::Release ( )
inline

Definition at line 119 of file env_posix.cc.

Here is the caller graph for this function:

§ SetAllowed()

void leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter::SetAllowed ( intptr_t  v)
inlineprivate

Definition at line 133 of file env_posix.cc.

133  {
134  allowed_.Release_Store(reinterpret_cast<void*>(v));
135  }

Member Data Documentation

§ allowed_

port::AtomicPointer leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter::allowed_
private

Definition at line 126 of file env_posix.cc.

§ mu_

port::Mutex leveldb::anonymous_namespace{env_posix.cc}::MmapLimiter::mu_
private

Definition at line 125 of file env_posix.cc.


The documentation for this class was generated from the following file: