dispatch_create_channel()

Allocate a dispatch handle, specifying a channel ID

Synopsis:

#include <sys/iofunc.h>
#include <sys/dispatch.h>

dispatch_t *dispatch_create_channel( int chid,
                                     unsigned flags );

Arguments:

chid
The ID of the channel to use for the dispatch layer.
flags
0, or the following:
  • DISPATCH_FLAG_CHANNEL_COIDDEATH — (QNX Neutrino 7.0 or later) set this flag if you've created the channel with NTO_CHF_COID_DISCONNECT and intend to use pulse_attach() to attach a handler to _PULSE_CODE_COIDDEATH pulses.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The dispatch_create_channel() function allocates and initializes a dispatch handle. The attach functions are:

If you wish, you can do a resmgr_attach() with a NULL path. This has the effect of initializing dispatch to receive messages, among other things.

This function is similar to dispatch_create(), but lets you specify a channel for the dispatch to use. It also lets you specify channel flags for name_attach().

Note: In order to create a public channel (i.e., without _NTO_CHF_PRIVATE set), your process must have the PROCMGR_AID_PUBLIC_CHANNEL ability enabled. For more information, see procmgr_ability().

This function is part of the dispatch layer of a resource manager. For more information, see Layers in a resource manager in the Bones of a Resource Manager chapter of Writing a Resource Manager.

Returns:

A handle to a dispatch structure, or NULL if an error occurs. The dispatch_t structure is an opaque data type; you can't access its contents directly.

Errors:

ENOMEM
Insufficient memory to allocate context.

Classification:

QNX Neutrino

Safety:  
Cancellation point No
Interrupt handler No
Signal handler No
Thread Yes