|  | // 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 |