/src/pacemaker/include/crm/common/pid_internal.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright 2015-2026 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__INCLUDED_CRM_COMMON_INTERNAL_H |
11 | | #error "Include <crm/common/internal.h> instead of <pid_internal.h> directly" |
12 | | #endif |
13 | | |
14 | | #ifndef PCMK__CRM_COMMON_PID_INTERNAL__H |
15 | | #define PCMK__CRM_COMMON_PID_INTERNAL__H |
16 | | |
17 | | #include <sys/types.h> // pid_t |
18 | | #include <unistd.h> // getpid() |
19 | | |
20 | | #include <crm/common/strings_internal.h> // pcmk__assert_asprintf |
21 | | |
22 | | #ifdef __cplusplus |
23 | | extern "C" { |
24 | | #endif |
25 | | |
26 | | /*! |
27 | | * \internal |
28 | | * \brief Check whether process exists (by PID and optionally executable path) |
29 | | * |
30 | | * \param[in] pid PID of process to check |
31 | | * \param[in] daemon If not NULL, path component to match with procfs entry |
32 | | * |
33 | | * \return Standard Pacemaker return code |
34 | | * \note Particular return codes of interest include pcmk_rc_ok for alive, |
35 | | * ESRCH for process is not alive (verified by kill and/or executable path |
36 | | * match), EACCES for caller unable or not allowed to check. A result of |
37 | | * "alive" is less reliable when \p daemon is not provided or procfs is |
38 | | * not available, since there is no guarantee that the PID has not been |
39 | | * recycled for another process. |
40 | | * \note This function cannot be used to verify \e authenticity of the process. |
41 | | */ |
42 | | int pcmk__pid_active(pid_t pid, const char *daemon); |
43 | | |
44 | | static inline char * |
45 | | pcmk__getpid_s(void) |
46 | 0 | { |
47 | 0 | return pcmk__assert_asprintf("%lu", (unsigned long) getpid()); |
48 | 0 | } Unexecuted instantiation: scores_fuzzer.c:pcmk__getpid_s Unexecuted instantiation: results.c:pcmk__getpid_s Unexecuted instantiation: scores.c:pcmk__getpid_s Unexecuted instantiation: strings.c:pcmk__getpid_s Unexecuted instantiation: utils.c:pcmk__getpid_s Unexecuted instantiation: iso8601.c:pcmk__getpid_s Unexecuted instantiation: logging.c:pcmk__getpid_s Unexecuted instantiation: mainloop.c:pcmk__getpid_s Unexecuted instantiation: options.c:pcmk__getpid_s Unexecuted instantiation: output.c:pcmk__getpid_s Unexecuted instantiation: output_log.c:pcmk__getpid_s Unexecuted instantiation: output_text.c:pcmk__getpid_s Unexecuted instantiation: output_xml.c:pcmk__getpid_s Unexecuted instantiation: patchset_display.c:pcmk__getpid_s Unexecuted instantiation: schemas.c:pcmk__getpid_s Unexecuted instantiation: xml.c:pcmk__getpid_s Unexecuted instantiation: xml_attr.c:pcmk__getpid_s Unexecuted instantiation: xml_comment.c:pcmk__getpid_s Unexecuted instantiation: xml_display.c:pcmk__getpid_s Unexecuted instantiation: xml_element.c:pcmk__getpid_s Unexecuted instantiation: xml_idref.c:pcmk__getpid_s Unexecuted instantiation: xml_io.c:pcmk__getpid_s Unexecuted instantiation: xpath.c:pcmk__getpid_s Unexecuted instantiation: acl.c:pcmk__getpid_s Unexecuted instantiation: actions.c:pcmk__getpid_s Unexecuted instantiation: agents.c:pcmk__getpid_s Unexecuted instantiation: cmdline.c:pcmk__getpid_s Unexecuted instantiation: digest.c:pcmk__getpid_s Unexecuted instantiation: health.c:pcmk__getpid_s Unexecuted instantiation: io.c:pcmk__getpid_s Unexecuted instantiation: ipc_client.c:pcmk__getpid_s Unexecuted instantiation: ipc_common.c:pcmk__getpid_s Unexecuted instantiation: ipc_controld.c:pcmk__getpid_s Unexecuted instantiation: ipc_pacemakerd.c:pcmk__getpid_s Unexecuted instantiation: ipc_schedulerd.c:pcmk__getpid_s Unexecuted instantiation: ipc_server.c:pcmk__getpid_s Unexecuted instantiation: messages.c:pcmk__getpid_s Unexecuted instantiation: nodes.c:pcmk__getpid_s Unexecuted instantiation: nvpair.c:pcmk__getpid_s Unexecuted instantiation: options_display.c:pcmk__getpid_s Unexecuted instantiation: patchset.c:pcmk__getpid_s Unexecuted instantiation: procfs.c:pcmk__getpid_s Unexecuted instantiation: rules.c:pcmk__getpid_s Unexecuted instantiation: servers.c:pcmk__getpid_s Unexecuted instantiation: cib.c:pcmk__getpid_s Unexecuted instantiation: ipc_attrd.c:pcmk__getpid_s Unexecuted instantiation: pid.c:pcmk__getpid_s Unexecuted instantiation: attrs.c:pcmk__getpid_s Unexecuted instantiation: strings_fuzzer.c:pcmk__getpid_s Unexecuted instantiation: cib_file_fuzzer.c:pcmk__getpid_s Unexecuted instantiation: cib_client.c:pcmk__getpid_s Unexecuted instantiation: cib_file.c:pcmk__getpid_s Unexecuted instantiation: cib_native.c:pcmk__getpid_s Unexecuted instantiation: cib_ops.c:pcmk__getpid_s Unexecuted instantiation: cib_remote.c:pcmk__getpid_s Unexecuted instantiation: cib_utils.c:pcmk__getpid_s Unexecuted instantiation: remote.c:pcmk__getpid_s Unexecuted instantiation: tls.c:pcmk__getpid_s Unexecuted instantiation: watchdog.c:pcmk__getpid_s Unexecuted instantiation: iso8601_fuzzer.c:pcmk__getpid_s |
49 | | |
50 | | #ifdef __cplusplus |
51 | | } |
52 | | #endif |
53 | | |
54 | | #endif // PCMK__CRM_COMMON_PID_INTERNAL__H |