brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 8d38beb Raw
67 lines · c
1//===-- tsan_dispatch_defs.h ------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file is a part of ThreadSanitizer (TSan), a race detector.10//11//===----------------------------------------------------------------------===//12#ifndef TSAN_DISPATCH_DEFS_H13#define TSAN_DISPATCH_DEFS_H14 15#include "sanitizer_common/sanitizer_internal_defs.h"16 17typedef struct dispatch_object_s {} *dispatch_object_t;18 19#define DISPATCH_DECL(name) \20  typedef struct name##_s : public dispatch_object_s {} *name##_t21 22DISPATCH_DECL(dispatch_queue);23DISPATCH_DECL(dispatch_source);24DISPATCH_DECL(dispatch_group);25DISPATCH_DECL(dispatch_data);26DISPATCH_DECL(dispatch_semaphore);27DISPATCH_DECL(dispatch_io);28 29typedef void (*dispatch_function_t)(void *arg);30typedef void (^dispatch_block_t)(void);31typedef void (^dispatch_io_handler_t)(bool done, dispatch_data_t data,32                                      int error);33 34typedef long dispatch_once_t;35typedef __sanitizer::u64 dispatch_time_t;36typedef int dispatch_fd_t;37typedef unsigned long dispatch_io_type_t;38typedef unsigned long dispatch_io_close_flags_t;39 40extern "C" {41void *dispatch_get_context(dispatch_object_t object);42void dispatch_retain(dispatch_object_t object);43void dispatch_release(dispatch_object_t object);44 45extern const dispatch_block_t _dispatch_data_destructor_free;46extern const dispatch_block_t _dispatch_data_destructor_munmap;47} // extern "C"48 49#define DISPATCH_DATA_DESTRUCTOR_DEFAULT nullptr50#define DISPATCH_DATA_DESTRUCTOR_FREE    _dispatch_data_destructor_free51#define DISPATCH_DATA_DESTRUCTOR_MUNMAP  _dispatch_data_destructor_munmap52 53#if __has_attribute(noescape)54# define DISPATCH_NOESCAPE __attribute__((__noescape__))55#else56# define DISPATCH_NOESCAPE57#endif58 59// Data types used in dispatch APIs60typedef unsigned long size_t;61typedef unsigned long uintptr_t;62typedef __sanitizer::s64 off_t;63typedef __sanitizer::u16 mode_t;64typedef long long_t;65 66#endif  // TSAN_DISPATCH_DEFS_H67