procmgr_ability_create()

Updated: April 19, 2023

Create a process-manager ability

Synopsis:

#include <sys/procmgr.h>

int procmgr_ability_create( const char *name,
                            unsigned flags );

Arguments:

name
The name of the ability. This should by convention consist of a service identifier followed by a capability identifier (e.g., "fs-qnx6/some_devctl"). The maximum length is 127 characters (PROCMGR_ABILITY_NAME_MAX).
flags
Flags that apply to the new ability; a bitwise OR of zero or more of the following:
  • PROCMGR_ADN_ROOT — the ability applies to processes that have an effective user ID of 0.
  • PROCMGR_ADN_NONROOT — the ability applies to processes that have an effective user ID other than 0.

Library:

libc

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

Description:

The procmgr_ability_create() function creates a process-manager ability. A server can use this function to create the ability, and clients can use procmgr_ability_lookup() to look it up. The name argument is a string that uniquely identifies the ability, and the flags specify which privilege domains have the ability by default.

Note:
  • In order to create an ability, your process must have the PROCMGR_AID_ABLE_CREATE ability enabled. For more information, see procmgr_ability().
  • You can only set the privilege domains for a new ability once; additional calls to procmgr_ability_create() for the same ability will return the requested ability ID but will not change permissions, equivalent to calling procmgr_ability_lookup().
  • There's no requirement for a call to procmgr_ability_create() to precede calls to procmgr_ability_lookup(). This avoids forcing any specific ordering of process initialization.

Returns:

A numeric ability identifier, which can then be used in a call to procmgr_ability() or to verify the abilities of a client, or a negative errno value if an error occurred.

Classification:

QNX Neutrino

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