| // Copyright (c) 2012 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/mac/scoped_mach_port.h" |
| |
| #include "base/mac/mach_logging.h" |
| |
| namespace base { |
| namespace mac { |
| namespace internal { |
| |
| // static |
| void SendRightTraits::Free(mach_port_t port) { |
| kern_return_t kr = mach_port_deallocate(mach_task_self(), port); |
| MACH_LOG_IF(ERROR, kr != KERN_SUCCESS, kr) |
| << "ScopedMachSendRight mach_port_deallocate"; |
| } |
| |
| // static |
| void ReceiveRightTraits::Free(mach_port_t port) { |
| kern_return_t kr = |
| mach_port_mod_refs(mach_task_self(), port, MACH_PORT_RIGHT_RECEIVE, -1); |
| MACH_LOG_IF(ERROR, kr != KERN_SUCCESS, kr) |
| << "ScopedMachReceiveRight mach_port_mod_refs"; |
| } |
| |
| // static |
| void PortSetTraits::Free(mach_port_t port) { |
| kern_return_t kr = |
| mach_port_mod_refs(mach_task_self(), port, MACH_PORT_RIGHT_PORT_SET, -1); |
| MACH_LOG_IF(ERROR, kr != KERN_SUCCESS, kr) |
| << "ScopedMachPortSet mach_port_mod_refs"; |
| } |
| |
| } // namespace internal |
| } // namespace mac |
| } // namespace base |