ham_action_fail_notify_signal(), ham_action_fail_notify_signal_node()

Updated: May 06, 2022

Add a notify signal action to a an action, that will be executed if the corresponding action fails

Synopsis:

#include <ha/ham.h>

int ham_action_fail_notify_signal(
                 ham_action_t *ahdl,
                 const char *aname, 
                 int nd, 
                 pid_t topid,
                 int signum, 
                 int code, 
                 int value, 
                 unsigned flags);

int ham_action_fail_notify_signal_node(
                 ham_action_t *ahdl,
                 const char *aname, 
                 const char *nodename, 
                 pid_t topid,
                 int signum, 
                 int code, 
                 int value, 
                 unsigned flags);

Arguments:

ahdl
The targeted HAM action handle to which the action fail item is added.
aname
The action fail item to add.
nd
(ham_action_fail_notify_signal() only) The node identifier of the recipient node.
nodename
(ham_action_fail_notify_signal_node() only) The recipient remote HAM.
topid
The process ID of the targeted process.
signum
Signum specifies the signal to deliver.
code
The code of the signal to deliver.
value
The value of the signal to deliver.
flags
Currently not used.

Library:

libham

Description:

The ham_action_fail_notify_signal*() functions add an action fail item (aname) to the specified action. The action will deliver a signal specified by signum to the specified nd/pid or nodename/pid with code specified in code and value given by value. The nd specified to ham_action_notify_signal() is the node identifier of the recipient node. This nd must be valid at the time the call is made.

The handle (ahdl) is obtained either:

The action is executed when the corresponding action that it is associated with, fails.

Currently, there are no flags defined.

Returns:

0
Success.
-1
An error occurred (errno is set).

Errors:

EBADF
Couldn't connect to the HAM.
EINVAL
The name given in aname is invalid (e.g., it contains the / character) or is NULL.

The connection to the HAM is invalid. This happens when the process that opened the connection (using ham_connect()) and the process that's calling ham_action_execute() aren't the same.

ENAMETOOLONG
The name given (in aname) is too long, i.e. it exceeds _POSIX_PATH_MAX (defined in <limits.h>). Note that the combined length of an entity/condition/action name is also limited by _POSIX_PATH_MAX.
ENOENT
There's no entity or condition specified by the given handle (ahdl).
ENOMEM
Not enough memory to create a new handle.

In addition to the above errors, the HAM returns any error it encounters while servicing this request.

Classification:

QNX Neutrino

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