12345678910111213141516171819202122232425262728293031323334353637383940 |
- // Copyright 2018 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "base/files/scoped_file.h"
- #include <stdint.h>
- // Copied from <android/fdsan.h>.
- // This can go away once this header is included in our copy of the NDK.
- extern "C" {
- void android_fdsan_exchange_owner_tag(int fd,
- uint64_t expected_tag,
- uint64_t new_tag)
- __attribute__((__weak__));
- }
- namespace base {
- namespace internal {
- static uint64_t ScopedFDToTag(const ScopedFD& owner) {
- return reinterpret_cast<uint64_t>(&owner);
- }
- // static
- void ScopedFDCloseTraits::Acquire(const ScopedFD& owner, int fd) {
- if (android_fdsan_exchange_owner_tag) {
- android_fdsan_exchange_owner_tag(fd, 0, ScopedFDToTag(owner));
- }
- }
- // static
- void ScopedFDCloseTraits::Release(const ScopedFD& owner, int fd) {
- if (android_fdsan_exchange_owner_tag) {
- android_fdsan_exchange_owner_tag(fd, ScopedFDToTag(owner), 0);
- }
- }
- } // namespace internal
- } // namespace base
|