blob: daac1a91ca3b6b2f8168a48de4866c2a48430760 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#include <zircon/compiler.h>
// Much filesystem code is built both for Fuchsia and for Linux or OS
// X hosts. This includes code instrumented with Clang's locking
// static analysis. The Linux and OS X host mutexes are not
// necessarily annotated properly for this static analysis. As such,
// fs provides a macro that wraps the locking annotations, or noops
// when they are not present. This wrapping is exposed in the public
// fs interface as the locking requirements are part of public
// interfaces.
#ifdef __Fuchsia__
#define FS_TA_EXCLUDES(...) __TA_EXCLUDES(__VA_ARGS__)
#define FS_TA_GUARDED(...) __TA_GUARDED(__VA_ARGS__)
#define FS_TA_REQUIRES(...) __TA_REQUIRES(__VA_ARGS__)
#define FS_TA_NO_THREAD_SAFETY_ANALYSIS __TA_NO_THREAD_SAFETY_ANALYSIS
#else
#define FS_TA_EXCLUDES(...)
#define FS_TA_GUARDED(...)
#define FS_TA_REQUIRES(...)
#define FS_TA_NO_THREAD_SAFETY_ANALYSIS
#endif