clang: clang::threadSafety Namespace Reference (original) (raw)

Namespaces
namespace lexpr
namespace sx
namespace til
Classes
class BeforeSet
class CapabilityExpr
class CFGVisitor
class CFGWalker
class CopyOnWriteVector
class SExprBuilder
class ThreadSafetyHandler
Handler class for thread safety warnings. More...
Enumerations
enum ProtectedOperationKind { POK_VarDereference, POK_VarAccess, POK_FunctionCall, POK_PassByRef, POK_PtPassByRef, POK_ReturnByRef, POK_PtReturnByRef }
This enum distinguishes between different kinds of operations that may need to be protected by locks. More...
enum LockKind { LK_Shared, LK_Exclusive, LK_Generic }
This enum distinguishes between different kinds of lock actions. More...
enum AccessKind { AK_Read, AK_Written }
This enum distinguishes between different ways to access (read or write) a variable. More...
enum LockErrorKind { LEK_LockedSomeLoopIterations, LEK_LockedSomePredecessors, LEK_LockedAtEndOfFunction, LEK_NotLockedAtEndOfFunction }
Functions
void runThreadSafetyAnalysis (AnalysisDeclContext &AC, ThreadSafetyHandler &Handler, BeforeSet **Bset)
Check a function's CFG for thread-safety violations.
void threadSafetyCleanup (BeforeSet *Cache)
LockKind getLockKindFromAccessKind (AccessKind AK)
Helper function that returns a LockKind required for the given level of access.
void printSCFG (CFGWalker &Walker)
std::string getSourceLiteralString (const Expr *CE)
std::ostream & operator<< (std::ostream &ss, const StringRef str)

AccessKind

This enum distinguishes between different ways to access (read or write) a variable.

Enumerator
AK_Read Reading a variable.
AK_Written Writing a variable.

Definition at line 75 of file ThreadSafety.h.

LockErrorKind

Enumerator
LEK_LockedSomeLoopIterations
LEK_LockedSomePredecessors
LEK_LockedAtEndOfFunction
LEK_NotLockedAtEndOfFunction

Definition at line 91 of file ThreadSafety.h.

LockKind

This enum distinguishes between different kinds of lock actions.

For example, it is an error to write a variable protected by shared version of a mutex.

Enumerator
LK_Shared Shared/reader lock of a mutex.
LK_Exclusive Exclusive/writer lock of a mutex.
LK_Generic Can be either Shared or Exclusive.

Definition at line 62 of file ThreadSafety.h.

ProtectedOperationKind

This enum distinguishes between different kinds of operations that may need to be protected by locks.

We use this enum in error handling.

Enumerator
POK_VarDereference Dereferencing a variable (e.g. p in *p = 5;)
POK_VarAccess Reading or writing a variable (e.g. x in x = 5;)
POK_FunctionCall Making a function call (e.g. fool())
POK_PassByRef Passing a guarded variable by reference.
POK_PtPassByRef Passing a pt-guarded variable by reference.
POK_ReturnByRef Returning a guarded variable by reference.
POK_PtReturnByRef Returning a pt-guarded variable by reference.

Definition at line 36 of file ThreadSafety.h.

getLockKindFromAccessKind()

getSourceLiteralString()

std::string clang::threadSafety::getSourceLiteralString ( const Expr * CE )

operator<<()

std::ostream & clang::threadSafety::operator<< ( std::ostream & ss, const StringRef str ) inline

printSCFG()

void clang::threadSafety::printSCFG ( CFGWalker & Walker )

runThreadSafetyAnalysis()

threadSafetyCleanup()

void clang::threadSafety::threadSafetyCleanup ( BeforeSet * Cache )