diff options
Diffstat (limited to 'lib.c')
| -rw-r--r-- | lib.c | 59 |
1 files changed, 59 insertions, 0 deletions
@@ -0,0 +1,59 @@ +/* Reincarnation services for translators. + + Copyright (C) 2013 Free Software Foundation, Inc. + + Written by Justus Winter <4winter@informatik.uni-hamburg.de> + + This file might one day be a part of the GNU Hurd. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <mach/mach_param.h> +#include "reincarnation.h" + +error_t +reincarnation_set_port (task_t task, mach_port_t port) +{ + error_t err; + + mach_port_t *ports; + size_t ports_len; + err = mach_ports_lookup (task, + &ports, &ports_len); + if (err) + return err; + + ports[TASK_PORT_REGISTER_REINCARNATION] = port; + + err = mach_ports_register (task, + ports, + TASK_PORT_REGISTER_MAX); + return err; +} + +error_t +reincarnation_get_port (task_t task, mach_port_t *port) +{ + error_t err; + + mach_port_t *ports = NULL; + size_t ports_len = 0; + err = mach_ports_lookup (task, + &ports, &ports_len); + if (err) + return err; + + *port = ports[TASK_PORT_REGISTER_REINCARNATION]; + return 0; +} |
