brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 90f8ea9 Raw
45 lines · c
1//===-- PosixSpawnResponsible.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#ifndef LLDB_HOST_POSIXSPAWNRESPONSIBLE_H10#define LLDB_HOST_POSIXSPAWNRESPONSIBLE_H11 12#include <spawn.h>13 14#if __has_include(<responsibility.h>)15#include <dispatch/dispatch.h>16#include <dlfcn.h>17#include <responsibility.h>18 19// Older SDKs  have responsibility.h but not this particular function. Let's20// include the prototype here.21errno_t responsibility_spawnattrs_setdisclaim(posix_spawnattr_t *attrs,22                                              bool disclaim);23 24#endif25 26static inline int setup_posix_spawn_responsible_flag(posix_spawnattr_t *attr) {27  if (@available(macOS 10.14, *)) {28#if __has_include(<responsibility.h>)29    static __typeof__(responsibility_spawnattrs_setdisclaim)30        *responsibility_spawnattrs_setdisclaim_ptr;31    static dispatch_once_t pred;32    dispatch_once(&pred, ^{33      responsibility_spawnattrs_setdisclaim_ptr =34          reinterpret_cast<__typeof__(&responsibility_spawnattrs_setdisclaim)>35          (dlsym(RTLD_DEFAULT, "responsibility_spawnattrs_setdisclaim"));36    });37    if (responsibility_spawnattrs_setdisclaim_ptr)38      return responsibility_spawnattrs_setdisclaim_ptr(attr, true);39#endif40  }41  return 0;42}43 44#endif // LLDB_HOST_POSIXSPAWNRESPONSIBLE_H45