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;
99 bool BlockInCriticalSectionChecker::isBlockingFunction(const CallEvent &Call) const { in isBlockingFunction()
100 return matchesAny(Call, SleepFn, GetcFn, FgetsFn, ReadFn, RecvFn); in isBlockingFunction()
103 bool BlockInCriticalSectionChecker::isLockFunction(const CallEvent &Call) const { in isLockFunction()
104 if (const auto *Ctor = dyn_cast<CXXConstructorCall>(&Call)) { in isLockFunction()
110 return matchesAny(Call, LockFn, PthreadLockFn, PthreadTryLockFn, MtxLock, in isLockFunction()
114 bool BlockInCriticalSectionChecker::isUnlockFunction(const CallEvent &Call) const { in isUnlockFunction()
115 if (const auto *Dtor = dyn_cast<CXXDestructorCall>(&Call)) { in isUnlockFunction()
122 return matchesAny(Call, UnlockFn, PthreadUnlockFn, MtxUnlock); in isUnlockFunction()
125 void BlockInCriticalSectionChecker::checkPostCall(const CallEvent &Call, in checkPostCall() argument
129 if (!isBlockingFunction(Call) in checkPostCall()
130 && !isLockFunction(Call) in checkPostCall()
131 && !isUnlockFunction(Call)) in checkPostCall()
136 if (isUnlockFunction(Call) && mutexCount > 0) { in checkPostCall()
139 } else if (isLockFunction(Call)) { in checkPostCall()
143 SymbolRef BlockDesc = Call.getReturnValue().getAsSymbol(); in checkPostCall()
144 reportBlockInCritSection(BlockDesc, Call, C); in checkPostCall()
149 SymbolRef BlockDescSym, const CallEvent &Call, CheckerContext &C) const { in reportBlockInCritSection() argument
156 os << "Call to blocking function '" << Call.getCalleeIdentifier()->getName() in reportBlockInCritSection()
160 R->addRange(Call.getSourceRange()); in reportBlockInCritSection()