return (caddr_t) (long int) __hurd_fail (EACCES);
return (__ptr_t) (long int) __hurd_fail (EACCES);
__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset){  error_t err;  vm_prot_t vmprot;  memory_object_t memobj;  vm_address_t mapaddr;  vm_size_t pageoff;  pageoff = offset & (vm_page_size - 1);  offset &= ~(vm_page_size - 1);  mapaddr = (vm_address_t) addr;  if (flags & MAP_FIXED)    {      /* A specific address is requested.  It need not be page-aligned;	 it just needs to be congruent with the object offset.  */      if ((mapaddr & (vm_page_size - 1)) != pageoff)	return (caddr_t) (long int) __hurd_fail (EINVAL);      else	/* We will add back PAGEOFF after mapping.  */	mapaddr -= pageoff;    }  vmprot = VM_PROT_NONE;  if (prot & PROT_READ)    vmprot |= VM_PROT_READ;  if (prot & PROT_WRITE)    vmprot |= VM_PROT_WRITE;  if (prot & PROT_EXEC)    vmprot |= VM_PROT_EXECUTE;  switch (flags & MAP_TYPE)    {    default:      return (caddr_t) (long int) __hurd_fail (EINVAL);    case MAP_ANON:      memobj = MACH_PORT_NULL;      break;    case MAP_FILE:    case 0:			/* Allow, e.g., just MAP_SHARED.  */      {	mach_port_t robj, wobj;	if (err = HURD_DPORT_USE (fd, __io_map (port, &robj, &wobj)))	  return (caddr_t) (long int) __hurd_dfail (fd, err);	switch (prot & (PROT_READ|PROT_WRITE))	  {	  case PROT_READ:	    memobj = robj;	    if (wobj != MACH_PORT_NULL)	      __mach_port_deallocate (__mach_task_self (), wobj);	    break;	  case PROT_WRITE:	    memobj = wobj;	    if (robj != MACH_PORT_NULL)	      __mach_port_deallocate (__mach_task_self (), robj);	    break;	  case PROT_READ|PROT_WRITE:	    if (robj == wobj)	      {		memobj = wobj;		/* Remove extra reference.  */		__mach_port_deallocate (__mach_task_self (), memobj);	      }	    else if (wobj == MACH_PORT_NULL && /* Not writable by mapping.  */		     !(flags & MAP_SHARED))	      /* The file can only be mapped for reading.  Since we are		 making a private mapping, we will never try to write the		 object anyway, so we don't care.  */	      memobj = robj;	    else	      {		__mach_port_deallocate (__mach_task_self (), wobj);		return (caddr_t) (long int) __hurd_fail (EACCES);	      }	    break;	  }	break;	/* XXX handle MAP_NOEXTEND */      }    }  /* XXX handle MAP_INHERIT */  err = __vm_map (__mach_task_self (),		  &mapaddr, (vm_size_t) len, (vm_address_t) 0,		  ! (flags & MAP_FIXED),		  memobj, (vm_offset_t) offset,		  ! (flags & MAP_SHARED),		  vmprot, VM_PROT_ALL,		  (flags & MAP_SHARED) ? VM_INHERIT_SHARE : VM_INHERIT_COPY);  if (err == KERN_NO_SPACE && (flags & MAP_FIXED))    {      /* XXX this is not atomic as it is in unix! */      /* The region is already allocated; deallocate it first.  */      err = __vm_deallocate (__mach_task_self (), mapaddr, len);      if (! err)	err = __vm_map (__mach_task_self (),			&mapaddr, (vm_size_t) len, (vm_address_t) 0,			0, memobj, (vm_offset_t) offset,			! (flags & MAP_SHARED),			vmprot, VM_PROT_ALL,			(flags & MAP_SHARED) ? VM_INHERIT_SHARE			: VM_INHERIT_COPY);    }  if (memobj != MACH_PORT_NULL)    __mach_port_deallocate (__mach_task_self (), memobj);  if (err)    return (caddr_t) (long int) __hurd_fail (err);  /* Adjust the mapping address for the offset-within-page.  */  mapaddr += pageoff;  return (caddr_t) mapaddr;}