diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-03 13:39:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-03 13:39:29 +0000 |
commit | b41961d74fe7ff2d4d4abaca92454e87c561e49f (patch) | |
tree | b34e3826a7b649dafdbd05081140c990c96d736d /include/crm/common/clone_internal.h | |
parent | Releasing progress-linux version 2.1.7-1~progress7.99u1. (diff) | |
download | pacemaker-b41961d74fe7ff2d4d4abaca92454e87c561e49f.tar.xz pacemaker-b41961d74fe7ff2d4d4abaca92454e87c561e49f.zip |
Merging upstream version 2.1.8~rc1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'include/crm/common/clone_internal.h')
-rw-r--r-- | include/crm/common/clone_internal.h | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/include/crm/common/clone_internal.h b/include/crm/common/clone_internal.h index 494ee74..db001a0 100644 --- a/include/crm/common/clone_internal.h +++ b/include/crm/common/clone_internal.h @@ -1,5 +1,5 @@ /* - * Copyright 2004-2023 the Pacemaker project contributors + * Copyright 2004-2024 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -8,7 +8,11 @@ */ #ifndef PCMK__CRM_COMMON_CLONE_INTERNAL__H -# define PCMK__CRM_COMMON_CLONE_INTERNAL__H +#define PCMK__CRM_COMMON_CLONE_INTERNAL__H + +#include <stdbool.h> // bool +#include <crm/common/scheduler_types.h> // pcmk_resource_t +#include <crm/common/resources.h> // pcmk_rsc_variant_clone #ifdef __cplusplus extern "C" { @@ -26,6 +30,50 @@ enum pcmk__clone_flags { pcmk__clone_promotion_constrained = (1 << 2), }; +/*! + * \internal + * \brief Check whether a resource is a clone resource + * + * \param[in] rsc Resource to check + * + * \return true if \p rsc is a clone, otherwise false + * + * \note This does not return true if \p rsc has a clone ancestor. + */ +static inline bool +pcmk__is_clone(const pcmk_resource_t *rsc) +{ + return (rsc != NULL) && (rsc->variant == pcmk_rsc_variant_clone); +} + +/*! + * \internal + * \brief Check whether a resource is a globally unique clone + * + * \param[in] rsc Resource to check + * + * \return true if \p rsc is a unique clone, otherwise false + */ +static inline bool +pcmk__is_unique_clone(const pcmk_resource_t *rsc) +{ + return pcmk__is_clone(rsc) && pcmk_is_set(rsc->flags, pcmk_rsc_unique); +} + +/*! + * \internal + * \brief Check whether a resource is an anonymous clone + * + * \param[in] rsc Resource to check + * + * \return true if \p rsc is an anonymous clone, otherwise false + */ +static inline bool +pcmk__is_anonymous_clone(const pcmk_resource_t *rsc) +{ + return pcmk__is_clone(rsc) && !pcmk_is_set(rsc->flags, pcmk_rsc_unique); +} + #ifdef __cplusplus } #endif |