ConnectFlags(), ConnectFlags_r()

Modify the flags associated with a connection

Synopsis:

#include <sys/neutrino.h>

int ConnectFlags( pid_t pid,
                  int coid, 
                  unsigned mask, 
                  unsigned bits );

int ConnectFlags_r( pid_t pid,
                    int coid, 
                    unsigned mask, 
                    unsigned bits );

Arguments:

pid
The ID of the process that the connection ID belongs to, or 0 for the current process.
coid
The ID of the connection whose flags you want to modify.
mask
A bitmap that indicates which bits are to be modified in the flags. The bits currently defined include:
  • _NTO_COF_CLOEXEC — close the connection if the process calls an exec*() function to start a new process.
  • _NTO_COF_INSECURE (QNX Neutrino 6.6 or later) — mark the connection as insecure. The kernel sets this flag on a connection if the client program replaces its process image (e.g., by calling exec*()) with a setuid or setgid binary. Until the process that owns the channel clears this flag, calls to MsgDeliverEvent() with an event type of SIGEV_MEMORY or SIGEV_THREAD fail with an error of EACCES.
bits
The new value of the flags.

Library:

libc

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

Description:

The ConnectFlags() and ConnectFlags_r() kernel calls modify flags associated with the specified connection. These kernel calls don't block.

These functions are identical except in the way they indicate errors. See the Returns section for details.

You need to initialize the bits that correspond to the flag in both the mask and bits arguments:

Note: In order to change the connection flags on a coid for another process with a different user ID, your process must have the PROCMGR_AID_CONNECTION ability enabled. For more information, see procmgr_ability().

Returns:

The previous value of the flags associated with the connection. If an error occurs:

Errors:

EBADF
The coid isn't a valid connection ID for the process.
EINVAL
The mask includes invalid bits.
EPERM
The calling process doesn't have the required permission; see procmgr_ability().
ESRCH
The process ID is invalid.

Classification:

QNX Neutrino

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