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]
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);
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.
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.
The door_return() function fails and returns to the calling process if: E2BIG
Arguments were too big for client.
The address of data_ptr or desc_ptr is invalid.
Invalid door_return() arguments were passed or a thread is bound to a door that no longer exists.
The client has too many open descriptors.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE ATTRIBUTE VALUE |
Architecture all |
Interface Stability Stable |
MT-Level Safe |
door_call(3C), attributes(5)