pacemaker 2.1.8-2.1.8
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
results_internal.h
Go to the documentation of this file.
1/*
2 * Copyright 2020-2024 the Pacemaker project contributors
3 *
4 * The version control history for this file may have further details.
5 *
6 * This source code is licensed under the GNU Lesser General Public License
7 * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
8 */
9
10#ifndef PCMK__COMMON_RESULTS_INTERNAL__H
11#define PCMK__COMMON_RESULTS_INTERNAL__H
12
13#include <glib.h> // GQuark
14
15extern const size_t pcmk__n_rc;
16
17int pcmk__result_bounds(enum pcmk_result_type, int *lower, int *upper);
18
28#define pcmk__mem_assert(ptr) do { \
29 if ((ptr) == NULL) { \
30 crm_abort(__FILE__, __func__, __LINE__, "Out of memory", FALSE, \
31 TRUE); \
32 crm_exit(CRM_EX_OSERR); \
33 } \
34 } while (0)
35
36/* Error domains for use with g_set_error */
37
40
41#define PCMK__RC_ERROR pcmk__rc_error_quark()
42#define PCMK__EXITC_ERROR pcmk__exitc_error_quark()
43
44/* Action results */
45
46typedef struct {
47 int exit_status; // Child exit status
48 enum pcmk_exec_status execution_status; // Execution status
49 char *exit_reason; // Brief, human-friendly explanation
50 char *action_stdout; // Action output
51 char *action_stderr; // Action error output
53
61#define PCMK__UNKNOWN_RESULT { \
62 .exit_status = CRM_EX_OK, \
63 .execution_status = PCMK_EXEC_UNKNOWN, \
64 .exit_reason = NULL, \
65 .action_stdout = NULL, \
66 .action_stderr = NULL, \
67 }
68
69void pcmk__set_result(pcmk__action_result_t *result, int exit_status,
70 enum pcmk_exec_status exec_status,
71 const char *exit_reason);
72
74 enum pcmk_exec_status exec_status,
75 const char *format, ...) G_GNUC_PRINTF(4, 5);
76
78 char *out, char *err);
79
81
84
85int pcmk__gaierror2rc(int gai);
86int pcmk__bzlib2rc(int bz2);
87
97static inline bool
98pcmk__result_ok(const pcmk__action_result_t *result)
99{
100 return (result != NULL) && (result->exit_status == CRM_EX_OK)
102}
103
104#endif // PCMK__COMMON_RESULTS_INTERNAL__H
pcmk__action_result_t result
Definition pcmk_fence.c:35
@ CRM_EX_OK
Success.
Definition results.h:255
pcmk_result_type
Types of Pacemaker result codes.
Definition results.h:364
pcmk_exec_status
Execution status.
Definition results.h:330
@ PCMK_EXEC_DONE
Action completed, result is known.
Definition results.h:333
void pcmk__set_result(pcmk__action_result_t *result, int exit_status, enum pcmk_exec_status exec_status, const char *exit_reason)
Definition results.c:976
void void pcmk__set_result_output(pcmk__action_result_t *result, char *out, char *err)
Definition results.c:1045
int pcmk__gaierror2rc(int gai)
Map a getaddrinfo() return code to the most similar Pacemaker return code.
Definition results.c:865
void pcmk__copy_result(const pcmk__action_result_t *src, pcmk__action_result_t *dst)
Definition results.c:1089
GQuark pcmk__rc_error_quark(void)
const size_t pcmk__n_rc
Definition results.c:331
GQuark pcmk__exitc_error_quark(void)
int pcmk__result_bounds(enum pcmk_result_type, int *lower, int *upper)
Definition results.c:94
void pcmk__format_result(pcmk__action_result_t *result, int exit_status, enum pcmk_exec_status exec_status, const char *format,...) G_GNUC_PRINTF(4
void pcmk__reset_result(pcmk__action_result_t *result)
Definition results.c:1065
int pcmk__bzlib2rc(int bz2)
Map a bz2 return code to the most similar Pacemaker return code.
Definition results.c:906
enum pcmk_exec_status execution_status