xref: /illumos-gate/usr/src/man/man3c/door_return.3c (revision 458f44a49dc56cd17a39815122214e7a1b4793e3)
te
Copyright (c) 2005, Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
DOOR_RETURN 3C "Mar 22, 2005"
NAME
door_return - return from a door invocation
SYNOPSIS

cc -mt [ flag... ] file... [ library... ]
#include <door.h>

int door_return(char *data_ptr, size_t data_size, door_desc_t *desc_ptr,
 uint_t num_desc);
DESCRIPTION

The door_return() function returns from a door invocation. It returns control to the thread that issued the associated door_call() and blocks waiting for the next door invocation. See door_call(3C). Results, if any, from the door invocation are passed back to the client in the buffers pointed to by data_ptr and desc_ptr. If there is not a client associated with the door_return(), the calling thread discards the results, releases any passed descriptors with the DOOR_RELEASE attribute, and blocks waiting for the next door invocation.

RETURN VALUES

Upon successful completion, door_return() does not return to the calling process. Otherwise, door_return() returns -1 to the calling process and sets errno to indicate the error.

ERRORS

The door_return() function fails and returns to the calling process if: E2BIG

Arguments were too big for client.

EFAULT

The address of data_ptr or desc_ptr is invalid.

EINVAL

Invalid door_return() arguments were passed or a thread is bound to a door that no longer exists.

EMFILE

The client has too many open descriptors.

ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Architecture all
Interface Stability Stable
MT-Level Safe
SEE ALSO

door_call(3C), attributes(5)