SDFM_CONROL_TEAST_EFC/EFC_PlatformC28x/Atomic.hpp
2024-10-11 09:35:38 +03:00

76 lines
1.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* \file Atomic.hpp
* \project EFC_PlatformC28x
* \date 10 мая 2024 г.
* \author leonidTitov
*
* \brief Проба пера использования ассемблерного кода для atomic
*/
#ifndef ATOMIC_HPP_
#define ATOMIC_HPP_
#include <stdint.h>
namespace umlib { namespace imp {
class AtomicFlag {
volatile uint16_t * flag;
public:
AtomicFlag();
AtomicFlag(const AtomicFlag &) = delete;
AtomicFlag & operator=(const AtomicFlag &) = delete;
AtomicFlag & operator=(const AtomicFlag &) volatile = delete;
bool test_and_set() volatile;
bool test_and_set();
void clear() volatile;
void clear();
~AtomicFlag();
};
}}
extern "C" {
extern uint16_t _test_and_set_bit( volatile uint16_t * p );
extern void _clear_bit( volatile uint16_t * p );
}
inline bool umlib::imp::AtomicFlag::test_and_set() volatile {
return _test_and_set_bit( flag );
}
inline bool umlib::imp::AtomicFlag::test_and_set() {
return _test_and_set_bit( flag );
}
inline void umlib::imp::AtomicFlag::clear() volatile {
_clear_bit( flag );
}
inline void umlib::imp::AtomicFlag::clear() {
_clear_bit( flag );
}
#endif /* ATOMIC_HPP_ */
// end file Atomic.hpp