Home | History | Annotate | Download | only in Analysis

Lines Matching full:lock

120 /// is built from an Expr* (i.e. calling a lock function).
122 /// Thread-safety analysis works by comparing lock expressions. Within the
131 /// of the same lock expression satisfies these criteria.
142 /// names when constructing a lock expression.
145 /// class C { Mutex Mu; void lock() EXCLUSIVE_LOCK_FUNCTION(this->Mu); };
146 /// void myFunc(C *X) { ... X->lock() ... }
153 /// foo(MyL); // requires lock MyL->Mu to be held
157 /// Build a Decl sequence representing the lock from the given expression.
185 DeclSeq.clear(); // Mark as invalid lock expression.
192 /// \param D The declaration to which the lock/unlock attribute is attached.
231 /// \param D The declaration to which the lock/unlock attribute is attached.
261 /// e.g. the lock expression foo.bar() has name "bar".
262 /// The caret will point unambiguously to the lock expression, so using this
279 /// accquire of a Lock.
285 /// \brief LKind stores whether a lock is held shared or exclusively.
287 /// locking or lock "upgrading" and "downgrading" between exclusive and
290 /// FIXME: add support for re-entrant locking and lock up/downgrading
337 /// \brief Returns true if the lockset contains a lock, regardless of whether
338 /// the lock is held exclusively or shared.
339 bool locksetContains(MutexID Lock) const {
340 return LSet.lookup(Lock);
343 /// \brief Returns true if the lockset contains a lock with the passed in
345 bool locksetContains(MutexID Lock, LockKind KindRequested) const {
346 const LockData *LockHeld = LSet.lookup(Lock);
350 /// \brief Returns true if the lockset contains a lock with at least the
352 /// returns true if the lock is held LK_Shared or LK_Exclusive. If we pass in
353 /// LK_Exclusive, this function returns true if the lock is held LK_Exclusive.
354 bool locksetContainsAtLeast(MutexID Lock, LockKind KindRequested) const {
357 return locksetContains(Lock);
359 return locksetContains(Lock, KindRequested);
379 /// \brief Add a new lock to the lockset, warning if the lock is already there.
381 /// \param LockExp The lock expression corresponding to the lock to be added
394 /// \brief Remove a lock from the lockset, warning if the lock is not there.
395 /// \param LockExp The lock expression corresponding to the lock to be removed
416 /// \brief Warn if the LSet does not contain a lock sufficient to protect access
569 // When we encounter an exclusive lock function, we need to add the lock
577 // When we encounter a shared lock function, we need to add the lock
590 if (UFAttr->args_size() == 0) { // The lock held is the "this" object.
780 // for a lock which is not in the intersection, but was in the union. We
785 // lock M on all code paths. Conversely, let's say that later we lock M.