Back to index

glibc  2.9
Functions | Variables
privports.c File Reference
#include <hurd.h>

Go to the source code of this file.

Functions

kern_return_t __get_privileged_ports (mach_port_t *host_priv_ptr, device_t *device_master_ptr)

Variables

mach_port_t _hurd_host_priv
mach_port_t _hurd_device_master

Function Documentation

kern_return_t __get_privileged_ports ( mach_port_t *  host_priv_ptr,
device_t *  device_master_ptr 
)

Definition at line 28 of file privports.c.

{
  if ((host_priv_ptr && _hurd_host_priv == MACH_PORT_NULL)
      || (device_master_ptr && _hurd_device_master == MACH_PORT_NULL))
    {
      error_t err;

      if (_hurd_ports)
       /* We have gotten some initial ports, so perhaps
          we have a proc server to talk to.  */
       err = __USEPORT (PROC, __proc_getprivports (port,
                                              &_hurd_host_priv,
                                              &_hurd_device_master));
      else
       return MACH_SEND_INVALID_DEST;

      if (err)
       return err;
    }

  if (host_priv_ptr)
    {
      error_t err = _hurd_host_priv == MACH_PORT_NULL ? 0
       : __mach_port_mod_refs (mach_task_self (),
                            _hurd_host_priv, MACH_PORT_RIGHT_SEND, +1);
      if (err)
       return err;
      *host_priv_ptr = _hurd_host_priv;
    }

  if (device_master_ptr)
    {
      error_t err = _hurd_device_master == MACH_PORT_NULL ? 0
       : __mach_port_mod_refs (mach_task_self (),
                            _hurd_device_master, MACH_PORT_RIGHT_SEND, +1);
      if (err)
       return err;
      *device_master_ptr = _hurd_device_master;
    }

  return KERN_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

mach_port_t _hurd_device_master

Definition at line 24 of file privports.c.

mach_port_t _hurd_host_priv

Definition at line 24 of file privports.c.