ham_action_fail_notify_signal(), ham_action_fail_notify_signal_node()

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);

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