Lines Matching refs:Call

52   bool isBlockingFunction(const CallEvent &Call) const;
53 bool isLockFunction(const CallEvent &Call) const;
54 bool isUnlockFunction(const CallEvent &Call) const;
59 void checkPostCall(const CallEvent &Call, CheckerContext &C) const;
95 bool BlockInCriticalSectionChecker::isBlockingFunction(const CallEvent &Call) const { in isBlockingFunction()
96 return matchesAny(Call, SleepFn, GetcFn, FgetsFn, ReadFn, RecvFn); in isBlockingFunction()
99 bool BlockInCriticalSectionChecker::isLockFunction(const CallEvent &Call) const { in isLockFunction()
100 if (const auto *Ctor = dyn_cast<CXXConstructorCall>(&Call)) { in isLockFunction()
106 return matchesAny(Call, LockFn, PthreadLockFn, PthreadTryLockFn, MtxLock, in isLockFunction()
110 bool BlockInCriticalSectionChecker::isUnlockFunction(const CallEvent &Call) const { in isUnlockFunction()
111 if (const auto *Dtor = dyn_cast<CXXDestructorCall>(&Call)) { in isUnlockFunction()
118 return matchesAny(Call, UnlockFn, PthreadUnlockFn, MtxUnlock); in isUnlockFunction()
121 void BlockInCriticalSectionChecker::checkPostCall(const CallEvent &Call, in checkPostCall() argument
125 if (!isBlockingFunction(Call) in checkPostCall()
126 && !isLockFunction(Call) in checkPostCall()
127 && !isUnlockFunction(Call)) in checkPostCall()
132 if (isUnlockFunction(Call) && mutexCount > 0) { in checkPostCall()
135 } else if (isLockFunction(Call)) { in checkPostCall()
139 SymbolRef BlockDesc = Call.getReturnValue().getAsSymbol(); in checkPostCall()
140 reportBlockInCritSection(BlockDesc, Call, C); in checkPostCall()
145 SymbolRef BlockDescSym, const CallEvent &Call, CheckerContext &C) const { in reportBlockInCritSection() argument
152 os << "Call to blocking function '" << Call.getCalleeIdentifier()->getName() in reportBlockInCritSection()
156 R->addRange(Call.getSourceRange()); in reportBlockInCritSection()