Source code for elos/plugincontrol/defines.h

// SPDX-License-Identifier: MIT
#pragma once

#include <safu/flags.h>

#define ELOS_PLUGINCONTROL_FLAG_LOADED_BIT (SAFU_FLAG_CUSTOM_START_BIT << 0)
#define ELOS_PLUGINCONTROL_FLAG_STARTED_BIT (SAFU_FLAG_CUSTOM_START_BIT << 1)
#define ELOS_PLUGINCONTROL_FLAG_WORKER_BIT (SAFU_FLAG_CUSTOM_START_BIT << 2)
#define ELOS_PLUGINCONTROL_FLAG_PLUGINERROR_BIT (SAFU_FLAG_CUSTOM_START_BIT << 3)
#define ELOS_PLUGINCONTROL_FLAG_HAS_LOADED_BIT(__f) ((atomic_load(__f) & ELOS_PLUGINCONTROL_FLAG_LOADED_BIT) != 0)
#define ELOS_PLUGINCONTROL_FLAG_HAS_STARTED_BIT(__f) ((atomic_load(__f) & ELOS_PLUGINCONTROL_FLAG_STARTED_BIT) != 0)
#define ELOS_PLUGINCONTROL_FLAG_HAS_WORKER_BIT(__f) ((atomic_load(__f) & ELOS_PLUGINCONTROL_FLAG_WORKER_BIT) != 0)
#define ELOS_PLUGINCONTROL_FLAG_HAS_PLUGINERROR_BIT(__f) \ ((atomic_load(__f) & ELOS_PLUGINCONTROL_FLAG_PLUGINERROR_BIT) != 0)
[docs]/******************************************************************* * Atomic set bit and test bit. * Returns 'true' when the given bit went from 0 to 1 during the operation. * * Parameters: * __f : Pointer to a safuFlags_t field * __b : The bit to be set and tested. * * Returns: * - `true` when the given bit went from 0 to 1 during the operation. * - `false` when the given bit did not change ******************************************************************/ #define ELOS_PLUGINCONTROL_FLAG_PUSH_BIT(__f, __b) ((atomic_fetch_or(__f, (__b)) & (__b)) == 0)
[docs]/******************************************************************* * Atomic clear bit and test bit. * Is 'true' when the given bit went from 1 to 0 during the operation * * Parameters: * __f : Pointer to a safuFlags_t field * __b : The bit to be cleared and tested. * * Returns: * - `true` when the given bit went from 1 to 0 during the operation * - `false` when the given bit did not change ******************************************************************/ #define ELOS_PLUGINCONTROL_FLAG_PULL_BIT(__f, __b) ((atomic_fetch_and(__f, ~(__b)) & (__b)) != 0)
#define ELOS_PLUGINCONTROL_FLAG_PUSH_LOADED_BIT(__f) \ ELOS_PLUGINCONTROL_FLAG_PUSH_BIT(__f, ELOS_PLUGINCONTROL_FLAG_LOADED_BIT)
#define ELOS_PLUGINCONTROL_FLAG_PUSH_STARTED_BIT(__f) \ ELOS_PLUGINCONTROL_FLAG_PUSH_BIT(__f, ELOS_PLUGINCONTROL_FLAG_STARTED_BIT)
#define ELOS_PLUGINCONTROL_FLAG_PUSH_WORKER_BIT(__f) \ ELOS_PLUGINCONTROL_FLAG_PUSH_BIT(__f, ELOS_PLUGINCONTROL_FLAG_WORKER_BIT)
#define ELOS_PLUGINCONTROL_FLAG_PULL_LOADED_BIT(__f) \ ELOS_PLUGINCONTROL_FLAG_PULL_BIT(__f, ELOS_PLUGINCONTROL_FLAG_LOADED_BIT)
#define ELOS_PLUGINCONTROL_FLAG_PULL_STARTED_BIT(__f) \ ELOS_PLUGINCONTROL_FLAG_PULL_BIT(__f, ELOS_PLUGINCONTROL_FLAG_STARTED_BIT)
#define ELOS_PLUGINCONTROL_FLAG_PULL_WORKER_BIT(__f) \ ELOS_PLUGINCONTROL_FLAG_PULL_BIT(__f, ELOS_PLUGINCONTROL_FLAG_WORKER_BIT)