Windows PowerShell command on Get-command door_bind
MyWebUniversity

Manual Pages for UNIX Operating System command usage for man door_bind

Standard C Library Functions door_bind(3C)

NAME

door_bind, door_unbind - bind or unbind the current thread

with the door server pool

SYNOPSIS

cc -mt [ flag... ] file... [ library... ]

#include

int door_bind(int did);

int door_unbind(void);

DESCRIPTION

The door_bind() function associates the current thread with

a door server pool. A door server pool is a private pool of server threads that is available to serve door invocations associated with the door did.

The door_unbind() function breaks the association of

door_bind() by removing any private door pool binding that

is associated with the current thread. Normally, door server threads are placed in a global pool of available threads that invocations on any door can use to dispatch a door invocation. A door that has been created

with DOOR_PRIVATE only uses server threads that have been

associated with the door by door_bind(). It is therefore

necessary to bind at least one server thread to doors

created with DOOR_PRIVATE.

The server thread create function, door_server_create(), is

initially called by the system during a door_create() opera-

tion. See door_server_create(3C) and door_create(3C).

The current thread is added to the private pool of server

threads associated with a door during the next door_return()

(that has been issued by the current thread after an associ-

ated door_bind()). See door_return(3C). A server thread

performing a door_bind() on a door that is already bound to

a different door performs an implicit door_unbind() of the

previous door. If a process containing threads that have been bound to a door calls fork(2), the threads in the child process will be

bound to an invalid door, and any calls to door_return(3C)

SunOS 5.11 Last change: 22 Mar 2005 1

Standard C Library Functions door_bind(3C)

will result in an error.

RETURN VALUES

Upon successful completion, a 0 is returned. Otherwise, -1

is returned and errno is set to indicate the error.

ERRORS

The door_bind() and door_unbind() functions fail if:

EBADF The did argument is not a valid door.

EBADF The door_unbind() function was called by a thread

that is currently not bound.

EINVAL did was not created with the DOOR_PRIVATE attri-

bute.

EXAMPLES

Example 1 Use door_bind() to create private server pools for

two doors.

The following example shows the use of door_bind() to create

private server pools for two doors, d1 and d2. Function

my_create() is called when a new server thread is needed; it

creates a thread running function, my_server_create(), which

binds itself to one of the two doors.

#include

#include

#include

thread_key_t door_key;

int d1 = -1;

int d2 = -1;

cond_t cv; /* statically initialized to zero */

mutex_t lock; /* statically initialized to zero */

extern void foo(void *, char *, size_t, door_desc_t *, uint_t);

extern void bar(void *, char *, size_t, door_desc_t *, uint_t);

static void *

my_server_create(void *arg)

{ /* wait for d1 & d2 to be initialized */

mutex_lock(&lock);

while (d1 == -1 || d2 == -1)

cond_wait(&cv, &lock);

mutex_unlock(&lock);

SunOS 5.11 Last change: 22 Mar 2005 2

Standard C Library Functions door_bind(3C)

if (arg == (void *)foo){ /* bind thread with pool associated with d1 */

thr_setspecific(door_key, (void *)foo);

if (door_bind(d1) < 0) {

perror("door_bind"); exit (-1);

} } else if (arg == (void *)bar) { /* bind thread with pool associated with d2 */

thr_setspecific(door_key, (void *)bar);

if (door_bind(d2) < 0) {

/* bind thread to d2 thread pool */

perror("door_bind"); exit (-1);

} }

pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);

door_return(NULL, 0, NULL, 0); /* Wait for door invocation */

} static void

my_create(door_info_t *dip)

{ /* Pass the door identity information to create function */

thr_create(NULL, 0, my_server_create, (void *)dip->di_proc,

THR_BOUND | THR_DETACHED, NULL);

} main() {

(void) door_server_create(my_create);

if (thr_keycreate(&door_key, NULL) != 0) {

perror("thr_keycreate");

exit(1); }

mutex_lock(&lock);

d1 = door_create(foo, NULL, DOOR_PRIVATE); /* Private pool */

d2 = door_create(bar, NULL, DOOR_PRIVATE); /* Private pool */

cond_signal(&cv);

mutex_unlock(&lock);

while (1) pause(); }

ATTRIBUTES

See attributes(5) for descriptions of the following attri-

butes:

SunOS 5.11 Last change: 22 Mar 2005 3

Standard C Library Functions door_bind(3C)

____________________________________________________________

| ATTRIBUTE TYPE | ATTRIBUTE VALUE |

|_____________________________|_____________________________|

| Architecture | all |

|_____________________________|_____________________________|

| Availability | SUNWcs |

|_____________________________|_____________________________|

| Interface Stability | Committed |

|_____________________________|_____________________________|

| MT-Level | Safe |

|_____________________________|_____________________________|

SEE ALSO

fork(2), door_create(3C), door_return(3C),

door_server_create(3C), attributes(5)

SunOS 5.11 Last change: 22 Mar 2005 4




Contact us      |      About us      |      Term of use      |       Copyright © 2000-2019 MyWebUniversity.com ™