1b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// Use of this source code is governed by a BSD-style license that can be
3b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// found in the LICENSE file.
4b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
5b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/mac/scoped_mach_port.h"
6b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
7b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/mac/mach_logging.h"
8b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
9b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratnamespace base {
10b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratnamespace mac {
11b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratnamespace internal {
12b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
13b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// static
14b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratvoid SendRightTraits::Free(mach_port_t port) {
15b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  kern_return_t kr = mach_port_deallocate(mach_task_self(), port);
16b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  MACH_LOG_IF(ERROR, kr != KERN_SUCCESS, kr)
17b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat      << "ScopedMachSendRight mach_port_deallocate";
18b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}
19b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
20b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// static
21b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratvoid ReceiveRightTraits::Free(mach_port_t port) {
22b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  kern_return_t kr =
23b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat      mach_port_mod_refs(mach_task_self(), port, MACH_PORT_RIGHT_RECEIVE, -1);
24b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  MACH_LOG_IF(ERROR, kr != KERN_SUCCESS, kr)
25b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat      << "ScopedMachReceiveRight mach_port_mod_refs";
26b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}
27b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
28b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// static
29b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratvoid PortSetTraits::Free(mach_port_t port) {
30b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  kern_return_t kr =
31b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat      mach_port_mod_refs(mach_task_self(), port, MACH_PORT_RIGHT_PORT_SET, -1);
32b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  MACH_LOG_IF(ERROR, kr != KERN_SUCCESS, kr)
33b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat      << "ScopedMachPortSet mach_port_mod_refs";
34b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}
35b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
36b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}  // namespace internal
37b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}  // namespace mac
38b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}  // namespace base
39