1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/dynamic_annotations.h" 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef NVALGRIND 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Each function is empty and called (via a macro) only in debug mode. 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// The arguments are captured by dynamic tools at runtime. 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateRWLockCreate(const char *file, int line, 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *lock) {} 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateRWLockDestroy(const char *file, int line, 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *lock) {} 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateRWLockAcquired(const char *file, int line, 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *lock, long is_w) {} 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateRWLockReleased(const char *file, int line, 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *lock, long is_w) {} 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateCondVarWait(const char *file, int line, 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *cv, 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *lock) {} 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateCondVarSignal(const char *file, int line, 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *cv) {} 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateCondVarSignalAll(const char *file, int line, 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *cv) {} 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotatePublishMemoryRange(const char *file, int line, 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *address, 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott long size) {} 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotatePCQCreate(const char *file, int line, 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *pcq) {} 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotatePCQDestroy(const char *file, int line, 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *pcq) {} 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotatePCQPut(const char *file, int line, 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *pcq) {} 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotatePCQGet(const char *file, int line, 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *pcq) {} 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateNewMemory(const char *file, int line, 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *mem, 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott long size) {} 40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateExpectRace(const char *file, int line, 41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *mem, 42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char *description) {} 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateBenignRace(const char *file, int line, 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *mem, 45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char *description) {} 46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateMutexIsUsedAsCondVar(const char *file, int line, 47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *mu) {} 48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateTraceMemory(const char *file, int line, 49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *arg) {} 50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateThreadName(const char *file, int line, 51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char *name) {} 52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateIgnoreReadsBegin(const char *file, int line) {} 53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateIgnoreReadsEnd(const char *file, int line) {} 54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateIgnoreWritesBegin(const char *file, int line) {} 55c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateIgnoreWritesEnd(const char *file, int line) {} 56c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" void AnnotateNoOp(const char *file, int line, 57c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const volatile void *arg) {} 58c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif // NVALGRIND 59c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 60c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// When running under valgrind, a non-zero value will be returned. 61c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern "C" int RunningOnValgrind() { 62c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined(NVALGRIND) 63c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return 0; 64c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#else 65c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return RUNNING_ON_VALGRIND; 66c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 67c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 68