From daa8c78da49bcbd264b76adc42b7c84d7690c365 Mon Sep 17 00:00:00 2001 From: MMS Date: Fri, 7 Jun 2024 16:07:22 -0400 Subject: [PATCH] 7.4.0-rc.1 --- .gitignore | 4 +- examples | 2 +- include/qp.hpp | 82 +++++++++--------- include/qpcpp.hpp | 7 +- ports/arm-cm/qk/armclang/qs_port.hpp | 12 +-- ports/arm-cm/qk/config/qp_config.hpp | 34 +++----- ports/arm-cm/qk/gnu/qs_port.hpp | 12 +-- ports/arm-cm/qk/iar/qs_port.hpp | 12 +-- ports/arm-cm/qutest/qs_port.hpp | 17 ++-- ports/arm-cm/qv/armclang/qs_port.hpp | 12 +-- ports/arm-cm/qv/config/qp_config.hpp | 34 +++----- ports/arm-cm/qv/gnu/qs_port.hpp | 12 +-- ports/arm-cm/qv/iar/qs_port.hpp | 12 +-- ports/arm-cm/qxk/armclang/qs_port.hpp | 12 +-- ports/arm-cm/qxk/config/qp_config.hpp | 34 +++----- ports/arm-cm/qxk/gnu/qs_port.hpp | 12 +-- ports/arm-cm/qxk/iar/qs_port.hpp | 12 +-- ports/arm-cr/qk/config/qp_config.hpp | 34 +++----- ports/arm-cr/qk/gnu/qs_port.hpp | 17 ++-- ports/arm-cr/qk/iar/qs_port.hpp | 17 ++-- ports/arm-cr/qk/ti/qs_port.hpp | 17 ++-- ports/arm-cr/qv/config/qp_config.hpp | 34 +++----- ports/arm-cr/qv/gnu/qs_port.hpp | 17 ++-- ports/arm-cr/qv/iar/qs_port.hpp | 17 ++-- ports/arm-cr/qv/ti/qs_port.hpp | 17 ++-- ports/config/qp_config.hpp | 31 ++----- ports/embos/qs_port.hpp | 17 ++-- ports/freertos/qs_port.hpp | 25 +++--- ports/lint-plus/16bit/qs_port.hpp | 27 +++--- ports/lint-plus/32bit/qs_port.hpp | 34 ++++---- ports/lint-plus2/16bit/qs_port.hpp | 27 +++--- ports/lint-plus2/32bit/qs_port.hpp | 34 ++++---- ports/msp430/qk/qs_port.hpp | 21 ++--- ports/msp430/qutest/qs_port.hpp | 21 ++--- ports/msp430/qv/qs_port.hpp | 21 ++--- ports/pic32/qk/xc32/qs_port.hpp | 15 ++-- ports/pic32/qutest/xc32/qs_port.hpp | 31 +++---- ports/pic32/qv/xc32/qs_port.hpp | 15 ++-- ports/posix-qutest/qs_port.hpp | 24 +++--- ports/posix-qv/qs_port.hpp | 24 +++--- ports/posix/qs_port.hpp | 24 +++--- ports/threadx/qs_port.hpp | 17 ++-- ports/uc-os2/qs_port.hpp | 17 ++-- ports/win32-qutest/qs_port.hpp | 25 +++--- ports/win32-qv/qs_port.hpp | 25 +++--- ports/win32/qs_port.hpp | 25 +++--- qpcpp.md5 | 86 +++++++++---------- qpcpp.qm | 116 ++++++++++++++++---------- src/qf/qf_dyn.cpp | 13 --- src/qf/qf_mem.cpp | 13 ++- src/qf/qf_qeq.cpp | 11 +++ 51 files changed, 586 insertions(+), 645 deletions(-) diff --git a/.gitignore b/.gitignore index f2641b2f..e6fd086a 100644 --- a/.gitignore +++ b/.gitignore @@ -37,10 +37,10 @@ version-* JLink*.* +cert/ html/ latex/ -cert-pack/ -cert-latex/ +doxygen/gen/ test_priv/ dbg/ rel/ diff --git a/examples b/examples index 7cb437b9..0537a180 160000 --- a/examples +++ b/examples @@ -1 +1 @@ -Subproject commit 7cb437b967372eedcde78f778680547406f21737 +Subproject commit 0537a180ce504ab971b26491c9bf945e4b711b4a diff --git a/include/qp.hpp b/include/qp.hpp index 17a53c01..8355e2d5 100644 --- a/include/qp.hpp +++ b/include/qp.hpp @@ -44,9 +44,9 @@ #define QP_HPP_ //============================================================================ -#define QP_VERSION_STR "7.3.5-rc.2" -#define QP_VERSION 735U -#define QP_RELEASE 0x70A1DEF0U +#define QP_VERSION_STR "7.4.0-rc.1" +#define QP_VERSION 740U +#define QP_RELEASE 0x7092C3BBU //============================================================================ //! @cond INTERNAL @@ -142,22 +142,22 @@ public: public: static constexpr std::uint8_t MARKER {0xE0U}; - -#ifdef QEVT_DYN_CTOR enum DynEvt: std::uint8_t { DYNAMIC }; -#endif // def QEVT_DYN_CTOR public: - -#ifdef QEVT_DYN_CTOR - void ctor(DynEvt const dummy) noexcept; -#endif // def QEVT_DYN_CTOR explicit constexpr QEvt(QSignal const s) noexcept : sig(s), refCtr_(0U), evtTag_(MARKER) {} QEvt() = delete; + void init() noexcept { + // no event parameters to initialize + } + void init(DynEvt const dummy) noexcept { + static_cast(dummy); + // no event parameters to initialize + } static bool verify_(QEvt const * const e) noexcept { return (e != nullptr) && ((e->evtTag_ & 0xF0U) == MARKER); @@ -1131,30 +1131,17 @@ QEvt const * newRef_( //${QF::QF-dyn::deleteRef_} .................................................. void deleteRef_(QEvt const * const evtRef) noexcept; -//${QF::QF-dyn::newXfromISR_} ................................................ -#ifdef QF_ISR_API -QEvt * newXfromISR_( - std::uint_fast16_t const evtSize, - std::uint_fast16_t const margin, - enum_t const sig) noexcept; -#endif // def QF_ISR_API - -//${QF::QF-dyn::gcFromISR} ................................................... -#ifdef QF_ISR_API -void gcFromISR(QEvt const * e) noexcept; -#endif // def QF_ISR_API - //${QF::QF-dyn::q_new} ....................................................... -#ifndef QEVT_DYN_CTOR +#ifndef QEVT_PAR_INIT template inline evtT_ * q_new(enum_t const sig) { return static_cast( QP::QF::newX_(sizeof(evtT_), QP::QF::NO_MARGIN, sig)); } -#endif // ndef QEVT_DYN_CTOR +#endif // ndef QEVT_PAR_INIT //${QF::QF-dyn::q_new} ....................................................... -#ifdef QEVT_DYN_CTOR +#ifdef QEVT_PAR_INIT template inline evtT_ * q_new( enum_t const sig, @@ -1162,13 +1149,13 @@ inline evtT_ * q_new( { evtT_ *e = static_cast( QP::QF::newX_(sizeof(evtT_), QP::QF::NO_MARGIN, sig)); - e->ctor(args...); // e cannot be nullptr + e->init(args...); // e cannot be nullptr return e; } -#endif // def QEVT_DYN_CTOR +#endif // def QEVT_PAR_INIT //${QF::QF-dyn::q_new_x} ..................................................... -#ifndef QEVT_DYN_CTOR +#ifndef QEVT_PAR_INIT template inline evtT_ * q_new_x( std::uint_fast16_t const margin, @@ -1176,10 +1163,10 @@ inline evtT_ * q_new_x( { return static_cast(QP::QF::newX_(sizeof(evtT_), margin, sig)); } -#endif // ndef QEVT_DYN_CTOR +#endif // ndef QEVT_PAR_INIT //${QF::QF-dyn::q_new_x} ..................................................... -#ifdef QEVT_DYN_CTOR +#ifdef QEVT_PAR_INIT template inline evtT_ * q_new_x( std::uint_fast16_t const margin, @@ -1188,11 +1175,11 @@ inline evtT_ * q_new_x( { evtT_ *e = static_cast(QP::QF::newX_(sizeof(evtT_), margin, sig)); if (e != nullptr) { - e->ctor(args...); + e->init(args...); } return e; } -#endif // def QEVT_DYN_CTOR +#endif // def QEVT_PAR_INIT //${QF::QF-dyn::q_new_ref} ................................................... template @@ -1210,6 +1197,19 @@ inline void q_delete_ref(evtT_ const *& evtRef) { evtRef = nullptr; } +//${QF::QF-dyn::newXfromISR_} ................................................ +#ifdef QF_ISR_API +QEvt * newXfromISR_( + std::uint_fast16_t const evtSize, + std::uint_fast16_t const margin, + enum_t const sig) noexcept; +#endif // def QF_ISR_API + +//${QF::QF-dyn::gcFromISR} ................................................... +#ifdef QF_ISR_API +void gcFromISR(QEvt const * e) noexcept; +#endif // def QF_ISR_API + } // namespace QF } // namespace QP //$enddecl${QF::QF-dyn} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1233,24 +1233,24 @@ void QF_onContextSw( (static_cast((prio_) | (pthre_) << 8U)) //${QF-macros::Q_NEW} ........................................................ -#ifndef QEVT_DYN_CTOR +#ifndef QEVT_PAR_INIT #define Q_NEW(evtT_, sig_) (QP::QF::q_new((sig_))) -#endif // ndef QEVT_DYN_CTOR +#endif // ndef QEVT_PAR_INIT //${QF-macros::Q_NEW} ........................................................ -#ifdef QEVT_DYN_CTOR +#ifdef QEVT_PAR_INIT #define Q_NEW(evtT_, sig_, ...) (QP::QF::q_new((sig_), __VA_ARGS__)) -#endif // def QEVT_DYN_CTOR +#endif // def QEVT_PAR_INIT //${QF-macros::Q_NEW_X} ...................................................... -#ifndef QEVT_DYN_CTOR +#ifndef QEVT_PAR_INIT #define Q_NEW_X(evtT_, margin_, sig_) (QP::QF::q_new_x((margin_), (sig_))) -#endif // ndef QEVT_DYN_CTOR +#endif // ndef QEVT_PAR_INIT //${QF-macros::Q_NEW_X} ...................................................... -#ifdef QEVT_DYN_CTOR +#ifdef QEVT_PAR_INIT #define Q_NEW_X(evtT_, margin_, sig_, ...) (QP::QF::q_new_x((margin_), (sig_), __VA_ARGS__)) -#endif // def QEVT_DYN_CTOR +#endif // def QEVT_PAR_INIT //${QF-macros::Q_NEW_REF} .................................................... #define Q_NEW_REF(evtRef_, evtT_) (QP::QF::q_new_ref(e, (evtRef_))) diff --git a/include/qpcpp.hpp b/include/qpcpp.hpp index 2319bbfc..f0f13969 100644 --- a/include/qpcpp.hpp +++ b/include/qpcpp.hpp @@ -62,7 +62,12 @@ //============================================================================ // QP/C++ API compatibility layer... -#if (QP_API_VERSION < 730) +#if (QP_API_VERSION < 740) + +#ifdef QEVT_DYN_CTOR +//! @deprecated #QEVT_DYN_CTOR, please use #QEVT_PAR_INIT +#define QEVT_PAR_INIT +#endif //! @deprecated plain 'char' is no longer forbidden in MISRA/AUTOSAR-C++ using char_t = char; diff --git a/ports/arm-cm/qk/armclang/qs_port.hpp b/ports/arm-cm/qk/armclang/qs_port.hpp index 8ce26fab..4ddb938b 100644 --- a/ports/arm-cm/qk/armclang/qs_port.hpp +++ b/ports/arm-cm/qk/armclang/qs_port.hpp @@ -27,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -50,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -58,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cm/qk/config/qp_config.hpp b/ports/arm-cm/qk/config/qp_config.hpp index 2ddf2dc4..5d92c5bc 100644 --- a/ports/arm-cm/qk/config/qp_config.hpp +++ b/ports/arm-cm/qk/config/qp_config.hpp @@ -1,7 +1,7 @@ //============================================================================ // QP configuration file (QK on ARM Cortex-M) -// Last updated for version: 7.3.0 -// Last updated on: 2023-10-30 +// Last updated for version: 7.4.0 +// Last updated on: 2024-06-06 // // Q u a n t u m L e a P s // ------------------------ @@ -129,9 +129,13 @@ // Default: 1 #define QF_MAX_TICK_RATE 1U -// Dynamic Event Constructor (QEVT_DYN_CTOR) -// Dynamic Event Constructor (RAII) -//#define QEVT_DYN_CTOR +// Event parameter initialization (QEVT_PAR_INIT) +// Resource Acquisition Is Initialization (RAII) for dynamic events +//#define QEVT_PAR_INIT + +// Provide destructors for QP classes +// Destructors for classes +//#define Q_XTOR // // Active Object stop API (QACTIVE_CAN_STOP) @@ -184,10 +188,10 @@ //.......................................................................... // QS Software Tracing // Target-resident component of QP/Spy software tracing system -// (tracing instrumenation and command-input). +// (tracing instrumentation and command-input). // NOTE: Requires command-line macro: Q_SPY -// The QS software tracing instrumenation is activated only when +// The QS software tracing instrumentation is activated only when // the macro Q_SPY is defined on the command-line to the compiler. // Typically, Q_SPY is defined only in the "spy" build configuration. @@ -199,22 +203,6 @@ // Default: 4 (2^32 dynamic range) #define QS_TIME_SIZE 4U -// Object pointer size (QS_OBJ_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of object pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_OBJ_PTR_SIZE 4U - -// Function pointer size (QS_FUN_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of function pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_FUN_PTR_SIZE 4U - // QS buffer counter size (QS_CTR_SIZE) // <1U=>1 // <2U=>2 (default) diff --git a/ports/arm-cm/qk/gnu/qs_port.hpp b/ports/arm-cm/qk/gnu/qs_port.hpp index 8ce26fab..4ddb938b 100644 --- a/ports/arm-cm/qk/gnu/qs_port.hpp +++ b/ports/arm-cm/qk/gnu/qs_port.hpp @@ -27,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -50,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -58,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cm/qk/iar/qs_port.hpp b/ports/arm-cm/qk/iar/qs_port.hpp index 8ce26fab..4ddb938b 100644 --- a/ports/arm-cm/qk/iar/qs_port.hpp +++ b/ports/arm-cm/qk/iar/qs_port.hpp @@ -27,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -50,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -58,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cm/qutest/qs_port.hpp b/ports/arm-cm/qutest/qs_port.hpp index 7560425a..4ddb938b 100644 --- a/ports/arm-cm/qutest/qs_port.hpp +++ b/ports/arm-cm/qutest/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cm/qv/armclang/qs_port.hpp b/ports/arm-cm/qv/armclang/qs_port.hpp index 8ce26fab..4ddb938b 100644 --- a/ports/arm-cm/qv/armclang/qs_port.hpp +++ b/ports/arm-cm/qv/armclang/qs_port.hpp @@ -27,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -50,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -58,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cm/qv/config/qp_config.hpp b/ports/arm-cm/qv/config/qp_config.hpp index 6d7ff4de..b47fcfd2 100644 --- a/ports/arm-cm/qv/config/qp_config.hpp +++ b/ports/arm-cm/qv/config/qp_config.hpp @@ -1,7 +1,7 @@ //============================================================================ // QP configuration file (QV on ARM Cortex-M) -// Last updated for version: 7.3.0 -// Last updated on: 2023-10-30 +// Last updated for version: 7.4.0 +// Last updated on: 2024-06-06 // // Q u a n t u m L e a P s // ------------------------ @@ -129,9 +129,13 @@ // Default: 1 #define QF_MAX_TICK_RATE 1U -// Dynamic Event Constructor (QEVT_DYN_CTOR) -// Dynamic Event Constructor (RAII) -//#define QEVT_DYN_CTOR +// Event parameter initialization (QEVT_PAR_INIT) +// Resource Acquisition Is Initialization (RAII) for dynamic events +//#define QEVT_PAR_INIT + +// Provide destructors for QP classes +// Destructors for classes +//#define Q_XTOR // // Active Object stop API (QACTIVE_CAN_STOP) @@ -184,10 +188,10 @@ //.......................................................................... // QS Software Tracing // Target-resident component of QP/Spy software tracing system -// (tracing instrumenation and command-input). +// (tracing instrumentation and command-input). // NOTE: Requires command-line macro: Q_SPY -// The QS software tracing instrumenation is activated only when +// The QS software tracing instrumentation is activated only when // the macro Q_SPY is defined on the command-line to the compiler. // Typically, Q_SPY is defined only in the "spy" build configuration. @@ -199,22 +203,6 @@ // Default: 4 (2^32 dynamic range) #define QS_TIME_SIZE 4U -// Object pointer size (QS_OBJ_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of object pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_OBJ_PTR_SIZE 4U - -// Function pointer size (QS_FUN_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of function pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_FUN_PTR_SIZE 4U - // QS buffer counter size (QS_CTR_SIZE) // <1U=>1 // <2U=>2 (default) diff --git a/ports/arm-cm/qv/gnu/qs_port.hpp b/ports/arm-cm/qv/gnu/qs_port.hpp index 8ce26fab..4ddb938b 100644 --- a/ports/arm-cm/qv/gnu/qs_port.hpp +++ b/ports/arm-cm/qv/gnu/qs_port.hpp @@ -27,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -50,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -58,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cm/qv/iar/qs_port.hpp b/ports/arm-cm/qv/iar/qs_port.hpp index 8ce26fab..4ddb938b 100644 --- a/ports/arm-cm/qv/iar/qs_port.hpp +++ b/ports/arm-cm/qv/iar/qs_port.hpp @@ -27,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -50,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -58,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cm/qxk/armclang/qs_port.hpp b/ports/arm-cm/qxk/armclang/qs_port.hpp index 8ce26fab..4ddb938b 100644 --- a/ports/arm-cm/qxk/armclang/qs_port.hpp +++ b/ports/arm-cm/qxk/armclang/qs_port.hpp @@ -27,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -50,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -58,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cm/qxk/config/qp_config.hpp b/ports/arm-cm/qxk/config/qp_config.hpp index b9928171..fa8f2412 100644 --- a/ports/arm-cm/qxk/config/qp_config.hpp +++ b/ports/arm-cm/qxk/config/qp_config.hpp @@ -1,7 +1,7 @@ //============================================================================ // QP configuration file (QXK on ARM Cortex-M) -// Last updated for version: 7.3.0 -// Last updated on: 2023-10-30 +// Last updated for version: 7.4.0 +// Last updated on: 2024-06-06 // // Q u a n t u m L e a P s // ------------------------ @@ -129,9 +129,13 @@ // Default: 1 #define QF_MAX_TICK_RATE 1U -// Dynamic Event Constructor (QEVT_DYN_CTOR) -// Dynamic Event Constructor (RAII) -//#define QEVT_DYN_CTOR +// Event parameter initialization (QEVT_PAR_INIT) +// Resource Acquisition Is Initialization (RAII) for dynamic events +//#define QEVT_PAR_INIT + +// Provide destructors for QP classes +// Destructors for classes +//#define Q_XTOR // // Active Object stop API (QACTIVE_CAN_STOP) @@ -184,10 +188,10 @@ //.......................................................................... // QS Software Tracing // Target-resident component of QP/Spy software tracing system -// (tracing instrumenation and command-input). +// (tracing instrumentation and command-input). // NOTE: Requires command-line macro: Q_SPY -// The QS software tracing instrumenation is activated only when +// The QS software tracing instrumentation is activated only when // the macro Q_SPY is defined on the command-line to the compiler. // Typically, Q_SPY is defined only in the "spy" build configuration. @@ -199,22 +203,6 @@ // Default: 4 (2^32 dynamic range) #define QS_TIME_SIZE 4U -// Object pointer size (QS_OBJ_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of object pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_OBJ_PTR_SIZE 4U - -// Function pointer size (QS_FUN_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of function pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_FUN_PTR_SIZE 4U - // QS buffer counter size (QS_CTR_SIZE) // <1U=>1 // <2U=>2 (default) diff --git a/ports/arm-cm/qxk/gnu/qs_port.hpp b/ports/arm-cm/qxk/gnu/qs_port.hpp index 8ce26fab..4ddb938b 100644 --- a/ports/arm-cm/qxk/gnu/qs_port.hpp +++ b/ports/arm-cm/qxk/gnu/qs_port.hpp @@ -27,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -50,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -58,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cm/qxk/iar/qs_port.hpp b/ports/arm-cm/qxk/iar/qs_port.hpp index 8ce26fab..4ddb938b 100644 --- a/ports/arm-cm/qxk/iar/qs_port.hpp +++ b/ports/arm-cm/qxk/iar/qs_port.hpp @@ -27,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -50,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -58,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cr/qk/config/qp_config.hpp b/ports/arm-cr/qk/config/qp_config.hpp index 30ba9f8a..e147cea2 100644 --- a/ports/arm-cr/qk/config/qp_config.hpp +++ b/ports/arm-cr/qk/config/qp_config.hpp @@ -1,7 +1,7 @@ //============================================================================ // QP configuration file (QK on ARM Cortex-R) -// Last updated for version: 7.3.0 -// Last updated on: 2023-10-30 +// Last updated for version: 7.4.0 +// Last updated on: 2024-06-06 // // Q u a n t u m L e a P s // ------------------------ @@ -129,9 +129,13 @@ // Default: 1 #define QF_MAX_TICK_RATE 1U -// Dynamic Event Constructor (QEVT_DYN_CTOR) -// Dynamic Event Constructor (RAII) -//#define QEVT_DYN_CTOR +// Event parameter initialization (QEVT_PAR_INIT) +// Resource Acquisition Is Initialization (RAII) for dynamic events +//#define QEVT_PAR_INIT + +// Provide destructors for QP classes +// Destructors for classes +//#define Q_XTOR // // Active Object stop API (QACTIVE_CAN_STOP) @@ -184,10 +188,10 @@ //.......................................................................... // QS Software Tracing // Target-resident component of QP/Spy software tracing system -// (tracing instrumenation and command-input). +// (tracing instrumentation and command-input). // NOTE: Requires command-line macro: Q_SPY -// The QS software tracing instrumenation is activated only when +// The QS software tracing instrumentation is activated only when // the macro Q_SPY is defined on the command-line to the compiler. // Typically, Q_SPY is defined only in the "spy" build configuration. @@ -199,22 +203,6 @@ // Default: 4 (2^32 dynamic range) #define QS_TIME_SIZE 4U -// Object pointer size (QS_OBJ_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of object pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_OBJ_PTR_SIZE 4U - -// Function pointer size (QS_FUN_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of function pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_FUN_PTR_SIZE 4U - // QS buffer counter size (QS_CTR_SIZE) // <1U=>1 // <2U=>2 (default) diff --git a/ports/arm-cr/qk/gnu/qs_port.hpp b/ports/arm-cr/qk/gnu/qs_port.hpp index 7560425a..4ddb938b 100644 --- a/ports/arm-cr/qk/gnu/qs_port.hpp +++ b/ports/arm-cr/qk/gnu/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cr/qk/iar/qs_port.hpp b/ports/arm-cr/qk/iar/qs_port.hpp index 7560425a..4ddb938b 100644 --- a/ports/arm-cr/qk/iar/qs_port.hpp +++ b/ports/arm-cr/qk/iar/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cr/qk/ti/qs_port.hpp b/ports/arm-cr/qk/ti/qs_port.hpp index 7560425a..4ddb938b 100644 --- a/ports/arm-cr/qk/ti/qs_port.hpp +++ b/ports/arm-cr/qk/ti/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cr/qv/config/qp_config.hpp b/ports/arm-cr/qv/config/qp_config.hpp index 72bc2b39..8744164b 100644 --- a/ports/arm-cr/qv/config/qp_config.hpp +++ b/ports/arm-cr/qv/config/qp_config.hpp @@ -1,7 +1,7 @@ //============================================================================ // QP configuration file (generic) -// Last updated for version: 7.3.0 -// Last updated on: 2023-10-30 +// Last updated for version: 7.4.0 +// Last updated on: 2024-06-06 // // Q u a n t u m L e a P s // ------------------------ @@ -129,9 +129,13 @@ // Default: 1 #define QF_MAX_TICK_RATE 1U -// Dynamic Event Constructor (QEVT_DYN_CTOR) -// Dynamic Event Constructor (RAII) -//#define QEVT_DYN_CTOR +// Event parameter initialization (QEVT_PAR_INIT) +// Resource Acquisition Is Initialization (RAII) for dynamic events +//#define QEVT_PAR_INIT + +// Provide destructors for QP classes +// Destructors for classes +//#define Q_XTOR // // Active Object stop API (QACTIVE_CAN_STOP) @@ -184,10 +188,10 @@ //.......................................................................... // QS Software Tracing // Target-resident component of QP/Spy software tracing system -// (tracing instrumenation and command-input). +// (tracing instrumentation and command-input). // NOTE: Requires command-line macro: Q_SPY -// The QS software tracing instrumenation is activated only when +// The QS software tracing instrumentation is activated only when // the macro Q_SPY is defined on the command-line to the compiler. // Typically, Q_SPY is defined only in the "spy" build configuration. @@ -199,22 +203,6 @@ // Default: 4 (2^32 dynamic range) #define QS_TIME_SIZE 4U -// Object pointer size (QS_OBJ_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of object pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_OBJ_PTR_SIZE 4U - -// Function pointer size (QS_FUN_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of function pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_FUN_PTR_SIZE 4U - // QS buffer counter size (QS_CTR_SIZE) // <1U=>1 // <2U=>2 (default) diff --git a/ports/arm-cr/qv/gnu/qs_port.hpp b/ports/arm-cr/qv/gnu/qs_port.hpp index 7560425a..4ddb938b 100644 --- a/ports/arm-cr/qv/gnu/qs_port.hpp +++ b/ports/arm-cr/qv/gnu/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cr/qv/iar/qs_port.hpp b/ports/arm-cr/qv/iar/qs_port.hpp index 7560425a..4ddb938b 100644 --- a/ports/arm-cr/qv/iar/qs_port.hpp +++ b/ports/arm-cr/qv/iar/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/arm-cr/qv/ti/qs_port.hpp b/ports/arm-cr/qv/ti/qs_port.hpp index 7560425a..4ddb938b 100644 --- a/ports/arm-cr/qv/ti/qs_port.hpp +++ b/ports/arm-cr/qv/ti/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/config/qp_config.hpp b/ports/config/qp_config.hpp index 7c2fe558..cca1e00f 100644 --- a/ports/config/qp_config.hpp +++ b/ports/config/qp_config.hpp @@ -1,7 +1,7 @@ //============================================================================ // QP configuration file (generic) -// Last updated for version: 7.3.0 -// Last updated on: 2023-10-30 +// Last updated for version: 7.4.0 +// Last updated on: 2024-06-06 // // Q u a n t u m L e a P s // ------------------------ @@ -129,10 +129,9 @@ // Default: 1 #define QF_MAX_TICK_RATE 1U -// Dynamic Event Constructor (QEVT_DYN_CTOR) -// Dynamic Event Constructor (RAII) -//#define QEVT_DYN_CTOR -// +// Event parameter initialization (QEVT_PAR_INIT) +// Resource Acquisition Is Initialization (RAII) for dynamic events +//#define QEVT_PAR_INIT // Provide destructors for QP classes // Destructors for classes @@ -189,10 +188,10 @@ //.......................................................................... // QS Software Tracing // Target-resident component of QP/Spy software tracing system -// (tracing instrumenation and command-input). +// (tracing instrumentation and command-input). // NOTE: Requires command-line macro: Q_SPY -// The QS software tracing instrumenation is activated only when +// The QS software tracing instrumentation is activated only when // the macro Q_SPY is defined on the command-line to the compiler. // Typically, Q_SPY is defined only in the "spy" build configuration. @@ -204,22 +203,6 @@ // Default: 4 (2^32 dynamic range) #define QS_TIME_SIZE 4U -// Object pointer size (QS_OBJ_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of object pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_OBJ_PTR_SIZE 4U - -// Function pointer size (QS_FUN_PTR_SIZE) -// <2U=>2 -// <4U=>4 (default) -// <8U=>8 -// Size of function pointer for QS [bytes] -// Default: 4 (4G address space) -#define QS_FUN_PTR_SIZE 4U - // QS buffer counter size (QS_CTR_SIZE) // <1U=>1 // <2U=>2 (default) diff --git a/ports/embos/qs_port.hpp b/ports/embos/qs_port.hpp index b296808b..4ddb938b 100644 --- a/ports/embos/qs_port.hpp +++ b/ports/embos/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,8 +27,8 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file //! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler @@ -31,9 +36,6 @@ #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,12 +47,11 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". -#ifndef QP_PORT_H_ +// *before* "qs.hpp". +#ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/freertos/qs_port.hpp b/ports/freertos/qs_port.hpp index 89f03aa1..4ddb938b 100644 --- a/ports/freertos/qs_port.hpp +++ b/ports/freertos/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-29 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -41,11 +43,11 @@ #define QS_FUN_PTR_SIZE 4U //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". - +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/lint-plus/16bit/qs_port.hpp b/ports/lint-plus/16bit/qs_port.hpp index 35dfe808..1bae19a7 100644 --- a/ports/lint-plus/16bit/qs_port.hpp +++ b/ports/lint-plus/16bit/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,21 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-17 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler -//! @description -//! This is an example QP/C++ port with the documentation for the main -//! items, such as configuration macros, functions, and includes. +//! @brief QS/C++ port to a 16-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 2U @@ -44,11 +43,11 @@ #define QS_FUN_PTR_SIZE 2U //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif diff --git a/ports/lint-plus/32bit/qs_port.hpp b/ports/lint-plus/32bit/qs_port.hpp index e55d5bc6..4ddb938b 100644 --- a/ports/lint-plus/32bit/qs_port.hpp +++ b/ports/lint-plus/32bit/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,36 +27,27 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-17 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler -//! @description -//! This is an example QP/C++ port with the documentation for the main -//! items, such as configuration macros, functions, and includes. +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -//! QS buffer counter size in bytes -#define QS_CTR_SIZE 2U - -//! QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - -//! object pointer size in bytes +// object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U -//! function pointer size in bytes +// function pointer size in bytes #define QS_FUN_PTR_SIZE 4U //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif diff --git a/ports/lint-plus2/16bit/qs_port.hpp b/ports/lint-plus2/16bit/qs_port.hpp index 35dfe808..1bae19a7 100644 --- a/ports/lint-plus2/16bit/qs_port.hpp +++ b/ports/lint-plus2/16bit/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,21 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-17 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler -//! @description -//! This is an example QP/C++ port with the documentation for the main -//! items, such as configuration macros, functions, and includes. +//! @brief QS/C++ port to a 16-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 2U @@ -44,11 +43,11 @@ #define QS_FUN_PTR_SIZE 2U //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif diff --git a/ports/lint-plus2/32bit/qs_port.hpp b/ports/lint-plus2/32bit/qs_port.hpp index e55d5bc6..4ddb938b 100644 --- a/ports/lint-plus2/32bit/qs_port.hpp +++ b/ports/lint-plus2/32bit/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,36 +27,27 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-17 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler -//! @description -//! This is an example QP/C++ port with the documentation for the main -//! items, such as configuration macros, functions, and includes. +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -//! QS buffer counter size in bytes -#define QS_CTR_SIZE 2U - -//! QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - -//! object pointer size in bytes +// object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U -//! function pointer size in bytes +// function pointer size in bytes #define QS_FUN_PTR_SIZE 4U //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif diff --git a/ports/msp430/qk/qs_port.hpp b/ports/msp430/qk/qs_port.hpp index fd3480f5..1bae19a7 100644 --- a/ports/msp430/qk/qs_port.hpp +++ b/ports/msp430/qk/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,30 +27,27 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port, generic C++ compiler +//! @brief QS/C++ port to a 16-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes -#define QS_OBJ_PTR_SIZE 4U +#define QS_OBJ_PTR_SIZE 2U // function pointer size in bytes -#define QS_FUN_PTR_SIZE 4U +#define QS_FUN_PTR_SIZE 2U //============================================================================ // NOTE: QS might be used with or without other QP components, in which // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/msp430/qutest/qs_port.hpp b/ports/msp430/qutest/qs_port.hpp index fd3480f5..1bae19a7 100644 --- a/ports/msp430/qutest/qs_port.hpp +++ b/ports/msp430/qutest/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,30 +27,27 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port, generic C++ compiler +//! @brief QS/C++ port to a 16-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes -#define QS_OBJ_PTR_SIZE 4U +#define QS_OBJ_PTR_SIZE 2U // function pointer size in bytes -#define QS_FUN_PTR_SIZE 4U +#define QS_FUN_PTR_SIZE 2U //============================================================================ // NOTE: QS might be used with or without other QP components, in which // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/msp430/qv/qs_port.hpp b/ports/msp430/qv/qs_port.hpp index fd3480f5..1bae19a7 100644 --- a/ports/msp430/qv/qs_port.hpp +++ b/ports/msp430/qv/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,30 +27,27 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port, generic C++ compiler +//! @brief QS/C++ port to a 16-bit CPU, generic C++11 compiler #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes -#define QS_OBJ_PTR_SIZE 4U +#define QS_OBJ_PTR_SIZE 2U // function pointer size in bytes -#define QS_FUN_PTR_SIZE 4U +#define QS_FUN_PTR_SIZE 2U //============================================================================ // NOTE: QS might be used with or without other QP components, in which // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/pic32/qk/xc32/qs_port.hpp b/ports/pic32/qk/xc32/qs_port.hpp index 3a27590e..4ddb938b 100644 --- a/ports/pic32/qk/xc32/qs_port.hpp +++ b/ports/pic32/qk/xc32/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,8 +27,8 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file //! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler @@ -31,9 +36,6 @@ #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/pic32/qutest/xc32/qs_port.hpp b/ports/pic32/qutest/xc32/qs_port.hpp index 5a8f1881..4ddb938b 100644 --- a/ports/pic32/qutest/xc32/qs_port.hpp +++ b/ports/pic32/qutest/xc32/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,30 +27,27 @@ // // //============================================================================ -//! @date Last updated on: 2023-09-03 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to a 32-bit CPU, generic C++ compiler -//! +//! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler + #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes -#define QS_OBJ_PTR_SIZE 4U +#define QS_OBJ_PTR_SIZE 4U // function pointer size in bytes -#define QS_FUN_PTR_SIZE 4U +#define QS_FUN_PTR_SIZE 4U //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/pic32/qv/xc32/qs_port.hpp b/ports/pic32/qv/xc32/qs_port.hpp index 3a27590e..4ddb938b 100644 --- a/ports/pic32/qv/xc32/qs_port.hpp +++ b/ports/pic32/qv/xc32/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,8 +27,8 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file //! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler @@ -31,9 +36,6 @@ #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,7 +47,7 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -53,4 +55,3 @@ #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/posix-qutest/qs_port.hpp b/ports/posix-qutest/qs_port.hpp index 1fed1c78..2cf165e8 100644 --- a/ports/posix-qutest/qs_port.hpp +++ b/ports/posix-qutest/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-21 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to POIX +//! @brief QS/C++ port to POSIX/Win32 #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -#define QS_CTR_SIZE 4U -#define QS_TIME_SIZE 4U - #if defined(_WIN64) || defined(__LP64__) || defined(_LP64) // 64-bit OS? #define QS_OBJ_PTR_SIZE 8U #define QS_FUN_PTR_SIZE 8U @@ -48,11 +50,11 @@ void QS_rx_input(void); // handle the QS-RX input } //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif diff --git a/ports/posix-qv/qs_port.hpp b/ports/posix-qv/qs_port.hpp index dd5e9c49..2cf165e8 100644 --- a/ports/posix-qv/qs_port.hpp +++ b/ports/posix-qv/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-20 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to POIX +//! @brief QS/C++ port to POSIX/Win32 #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -#define QS_CTR_SIZE 4U -#define QS_TIME_SIZE 4U - #if defined(_WIN64) || defined(__LP64__) || defined(_LP64) // 64-bit OS? #define QS_OBJ_PTR_SIZE 8U #define QS_FUN_PTR_SIZE 8U @@ -48,11 +50,11 @@ void QS_rx_input(void); // handle the QS-RX input } //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif diff --git a/ports/posix/qs_port.hpp b/ports/posix/qs_port.hpp index dd5e9c49..2cf165e8 100644 --- a/ports/posix/qs_port.hpp +++ b/ports/posix/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-20 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to POIX +//! @brief QS/C++ port to POSIX/Win32 #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -#define QS_CTR_SIZE 4U -#define QS_TIME_SIZE 4U - #if defined(_WIN64) || defined(__LP64__) || defined(_LP64) // 64-bit OS? #define QS_OBJ_PTR_SIZE 8U #define QS_FUN_PTR_SIZE 8U @@ -48,11 +50,11 @@ void QS_rx_input(void); // handle the QS-RX input } //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif diff --git a/ports/threadx/qs_port.hpp b/ports/threadx/qs_port.hpp index b296808b..4ddb938b 100644 --- a/ports/threadx/qs_port.hpp +++ b/ports/threadx/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,8 +27,8 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file //! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler @@ -31,9 +36,6 @@ #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,12 +47,11 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". -#ifndef QP_PORT_H_ +// *before* "qs.hpp". +#ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/uc-os2/qs_port.hpp b/ports/uc-os2/qs_port.hpp index b296808b..4ddb938b 100644 --- a/ports/uc-os2/qs_port.hpp +++ b/ports/uc-os2/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,8 +27,8 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-16 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file //! @brief QS/C++ port to a 32-bit CPU, generic C++11 compiler @@ -31,9 +36,6 @@ #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -// QS time-stamp size in bytes -#define QS_TIME_SIZE 4U - // object pointer size in bytes #define QS_OBJ_PTR_SIZE 4U @@ -45,12 +47,11 @@ // case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), // and QF_CRIT_EXIT() are needed. In this port QS is configured to be used // with the other QP component, by simply including "qp_port.hpp" -//*before* "qs.hpp". -#ifndef QP_PORT_H_ +// *before* "qs.hpp". +#ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/win32-qutest/qs_port.hpp b/ports/win32-qutest/qs_port.hpp index 1e12359a..2cf165e8 100644 --- a/ports/win32-qutest/qs_port.hpp +++ b/ports/win32-qutest/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-18 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to Win32 +//! @brief QS/C++ port to POSIX/Win32 #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -#define QS_CTR_SIZE 4U -#define QS_TIME_SIZE 4U - #if defined(_WIN64) || defined(__LP64__) || defined(_LP64) // 64-bit OS? #define QS_OBJ_PTR_SIZE 8U #define QS_FUN_PTR_SIZE 8U @@ -48,11 +50,11 @@ void QS_rx_input(void); // handle the QS-RX input } //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -60,4 +62,3 @@ void QS_rx_input(void); // handle the QS-RX input #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/win32-qv/qs_port.hpp b/ports/win32-qv/qs_port.hpp index 1e12359a..2cf165e8 100644 --- a/ports/win32-qv/qs_port.hpp +++ b/ports/win32-qv/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-18 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to Win32 +//! @brief QS/C++ port to POSIX/Win32 #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -#define QS_CTR_SIZE 4U -#define QS_TIME_SIZE 4U - #if defined(_WIN64) || defined(__LP64__) || defined(_LP64) // 64-bit OS? #define QS_OBJ_PTR_SIZE 8U #define QS_FUN_PTR_SIZE 8U @@ -48,11 +50,11 @@ void QS_rx_input(void); // handle the QS-RX input } //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -60,4 +62,3 @@ void QS_rx_input(void); // handle the QS-RX input #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/ports/win32/qs_port.hpp b/ports/win32/qs_port.hpp index 1e12359a..2cf165e8 100644 --- a/ports/win32/qs_port.hpp +++ b/ports/win32/qs_port.hpp @@ -1,5 +1,10 @@ //============================================================================ // QP/C++ Real-Time Embedded Framework (RTEF) +// +// Q u a n t u m L e a P s +// ------------------------ +// Modern Embedded Software +// // Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. // // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial @@ -22,18 +27,15 @@ // // //============================================================================ -//! @date Last updated on: 2023-08-18 -//! @version Last updated for: @ref qpcpp_7_3_0 +//! @date Last updated on: 2024-06-06 +//! @version Last updated for: @ref qpcpp_7_4_0 //! //! @file -//! @brief QS/C++ port to Win32 +//! @brief QS/C++ port to POSIX/Win32 #ifndef QS_PORT_HPP_ #define QS_PORT_HPP_ -#define QS_CTR_SIZE 4U -#define QS_TIME_SIZE 4U - #if defined(_WIN64) || defined(__LP64__) || defined(_LP64) // 64-bit OS? #define QS_OBJ_PTR_SIZE 8U #define QS_FUN_PTR_SIZE 8U @@ -48,11 +50,11 @@ void QS_rx_input(void); // handle the QS-RX input } //============================================================================ -// NOTE: QS might be used with or without other QP components, in which case -// the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), -// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used with -// the other QP component, by simply including "qp_port.hpp" *before* "qs.hpp". -// +// NOTE: QS might be used with or without other QP components, in which +// case the separate definitions of the macros QF_CRIT_STAT, QF_CRIT_ENTRY(), +// and QF_CRIT_EXIT() are needed. In this port QS is configured to be used +// with the other QP component, by simply including "qp_port.hpp" +// *before* "qs.hpp". #ifndef QP_PORT_HPP_ #include "qp_port.hpp" // use QS with QP #endif @@ -60,4 +62,3 @@ void QS_rx_input(void); // handle the QS-RX input #include "qs.hpp" // QS platform-independent public interface #endif // QS_PORT_HPP_ - diff --git a/qpcpp.md5 b/qpcpp.md5 index ae799bdc..e1c30f7f 100644 --- a/qpcpp.md5 +++ b/qpcpp.md5 @@ -1,10 +1,10 @@ -0c7051849804080425142a71b1e9b13b *qpcpp.qm +ace44a87357f68f4c7de6b1a680b0933 *qpcpp.qm 2c7717f261e842ae0449a321d3c50f3e *include/qequeue.hpp fe1ff6084ff592ca8d14a6efffec296c *include/qk.hpp 0cf7c36bbbca2e0ebfe61347e9e572e5 *include/qmpool.hpp -1290aa2707d23ea765a131a4c30d7ce9 *include/qp.hpp +c53660e6bdc9a4a449b67238a3cab402 *include/qp.hpp 61c7a3aa8cb265f478915f39b7fae9cc *include/qp_pkg.hpp -81e2fed348f03200d00b4d7c4473826f *include/qpcpp.hpp +5fd2515efbc5c06e02bb1a4200490b58 *include/qpcpp.hpp be2da5d56117fd172f12c8b6589f6402 *include/qs.hpp d59808009be96849963572ffcbf9dceb *include/qs_dummy.hpp db4013ceefb33498f5d38e15d0cb9323 *include/qs_pkg.hpp @@ -18,11 +18,11 @@ dec4234285d4efd40b3ae6f680bc7179 *src/qf/qep_msm.cpp 8b5c1ece58069ed5582864fd2dc58167 *src/qf/qf_act.cpp eba1e6d624f4b1c7c82b2f98ef3e9198 *src/qf/qf_actq.cpp 39b02b596faa57abfa96b0f7c3f7fb82 *src/qf/qf_defer.cpp -7b797a3a69836d0aba3c600130606f01 *src/qf/qf_dyn.cpp -f23875214b4c4c905bdb0567d900b36b *src/qf/qf_mem.cpp +706becce3359b5dd6277c127b4132e04 *src/qf/qf_dyn.cpp +83d38b1377e52db75950f1a4d4b47e8a *src/qf/qf_mem.cpp 37cfa5b9419f1e00608267ff29fbc1a8 *src/qf/qf_ps.cpp 19cf8976578a43e93bfbb51dbe932b6c *src/qf/qf_qact.cpp -46f954811c55e933e016bb36ab22adcd *src/qf/qf_qeq.cpp +b59c6108ccab5975b9f9303d4058acdb *src/qf/qf_qeq.cpp 816dc7182f4014539f6f5304782ddb7b *src/qf/qf_qmact.cpp c551aafbf9ecba93cfdb12f81fbfba61 *src/qf/qf_time.cpp 4dc7ca60248f4c13034e6f2481c7663d *src/qk/CMakeLists.txt @@ -50,80 +50,80 @@ ede719cdbc201d14586a3f11e77ced26 *ports/lint-plus/au-ql-cpp11.lnt 5f789348dba099c2055f737ba756faac *ports/lint-plus/std.lnt 1f3d9dfbf71077abbdb9f27c96879101 *ports/arm-cm/qk/armclang/qk_port.cpp aba379ac6a39b1f21057bed8156f0516 *ports/arm-cm/qk/armclang/qp_port.hpp -91a3b66c3f12a98bef48b00640ed5e6d *ports/arm-cm/qk/armclang/qs_port.hpp -c2f71cb14dd220d5f06fd915174f6c75 *ports/arm-cm/qk/config/qp_config.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qk/armclang/qs_port.hpp +da7e124adad7bbfb1f2f970d13a5d5f1 *ports/arm-cm/qk/config/qp_config.hpp ef801586265ec37c619a8fe9868220d8 *ports/arm-cm/qk/gnu/qk_port.cpp c6227ba01b71184c9e03ee6c8137ffc2 *ports/arm-cm/qk/gnu/qp_port.hpp -91a3b66c3f12a98bef48b00640ed5e6d *ports/arm-cm/qk/gnu/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qk/gnu/qs_port.hpp 01fd92d735fe42035f26eccc0ba83d4b *ports/arm-cm/qk/iar/qk_port.cpp 98e1649f0c8fb4efc200767a32514ea4 *ports/arm-cm/qk/iar/qp_port.hpp -91a3b66c3f12a98bef48b00640ed5e6d *ports/arm-cm/qk/iar/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qk/iar/qs_port.hpp 1b7ab4c3d54bd187f07b7f24527f95d8 *ports/arm-cm/qv/armclang/qp_port.hpp -91a3b66c3f12a98bef48b00640ed5e6d *ports/arm-cm/qv/armclang/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qv/armclang/qs_port.hpp 2edb1e42edf2d7fce80120a780396f5a *ports/arm-cm/qv/armclang/qv_port.cpp -36821742fd954c214c5675a44b98e8bd *ports/arm-cm/qv/config/qp_config.hpp +2ac68f3f51ff26608df023c17c6c3265 *ports/arm-cm/qv/config/qp_config.hpp 03aa01a02561593169bfb4b563c7fc29 *ports/arm-cm/qv/gnu/qp_port.hpp -91a3b66c3f12a98bef48b00640ed5e6d *ports/arm-cm/qv/gnu/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qv/gnu/qs_port.hpp 57ae9990dab9cbab2b2c4234fdab42d0 *ports/arm-cm/qv/gnu/qv_port.cpp 342f4a28c22e1d092b135636456b6400 *ports/arm-cm/qv/iar/qp_port.hpp -91a3b66c3f12a98bef48b00640ed5e6d *ports/arm-cm/qv/iar/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qv/iar/qs_port.hpp fed596b153b928c8631e2712361049af *ports/arm-cm/qv/iar/qv_port.cpp fbab3cb88a019df3a12ee56a4a6f90b2 *ports/arm-cm/qxk/armclang/qp_port.hpp -91a3b66c3f12a98bef48b00640ed5e6d *ports/arm-cm/qxk/armclang/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qxk/armclang/qs_port.hpp 3e6878ba5e8df9ed733edf9f2da2ae9e *ports/arm-cm/qxk/armclang/qxk_port.cpp -e219623c0ac1ee0fcb24d9b2245e406e *ports/arm-cm/qxk/config/qp_config.hpp +f96ba44c9c5d16e5a12c70f4b9a91228 *ports/arm-cm/qxk/config/qp_config.hpp 246d7b72e2f0c1e3ba6e699740dbe390 *ports/arm-cm/qxk/gnu/qp_port.hpp -91a3b66c3f12a98bef48b00640ed5e6d *ports/arm-cm/qxk/gnu/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qxk/gnu/qs_port.hpp f12841a5d59075aa3e1e9cfb683c4b98 *ports/arm-cm/qxk/gnu/qxk_port.cpp 55b897c657e225d775cf6121d6278585 *ports/arm-cm/qxk/iar/qp_port.hpp -91a3b66c3f12a98bef48b00640ed5e6d *ports/arm-cm/qxk/iar/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qxk/iar/qs_port.hpp bcb7406483cc9280c2b05113f6078cb6 *ports/arm-cm/qxk/iar/qxk_port.cpp 0f3ac7def7c330e85912d95527c94ebc *ports/arm-cm/qutest/qp_port.hpp -4c0ab6f6ad804f0bd70f146d53a1d197 *ports/arm-cm/qutest/qs_port.hpp -a595b03768298546cd9dff7f4e8876f7 *ports/arm-cr/qk/config/qp_config.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cm/qutest/qs_port.hpp +0b1aa9a3a51511f60cb9c94fd467d42a *ports/arm-cr/qk/config/qp_config.hpp 0d2162273e16e4d6ad3e71b19ec7ca45 *ports/arm-cr/qk/gnu/qp_port.hpp -4c0ab6f6ad804f0bd70f146d53a1d197 *ports/arm-cr/qk/gnu/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cr/qk/gnu/qs_port.hpp b752ce288855bf410176fa39a6dffb27 *ports/arm-cr/qk/iar/qp_port.hpp -4c0ab6f6ad804f0bd70f146d53a1d197 *ports/arm-cr/qk/iar/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cr/qk/iar/qs_port.hpp 8dc7c7e3e4c9d65299030b2769381f1a *ports/arm-cr/qk/ti/qp_port.hpp -4c0ab6f6ad804f0bd70f146d53a1d197 *ports/arm-cr/qk/ti/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cr/qk/ti/qs_port.hpp a2b9a032a510488006b8ad612e061fc6 *ports/arm-cr/qv/gnu/qp_port.hpp -4c0ab6f6ad804f0bd70f146d53a1d197 *ports/arm-cr/qv/gnu/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cr/qv/gnu/qs_port.hpp 526e806ca856fef6f16e44a58ab3d89d *ports/arm-cr/qv/iar/qp_port.hpp -4c0ab6f6ad804f0bd70f146d53a1d197 *ports/arm-cr/qv/iar/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cr/qv/iar/qs_port.hpp 0b426a92acaee631bad6c87e6623612a *ports/arm-cr/qv/ti/qp_port.hpp -4c0ab6f6ad804f0bd70f146d53a1d197 *ports/arm-cr/qv/ti/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/arm-cr/qv/ti/qs_port.hpp 3dc3f0903feca56ec1075f412a33ce93 *ports/msp430/qk/qp_port.hpp -4298e1795a43964162145ce02971f27a *ports/msp430/qk/qs_port.hpp +9fe0bc88c876080155359beef966d20e *ports/msp430/qk/qs_port.hpp 4bbd4f9996670ccabb7da4a47bad6c20 *ports/msp430/qv/qp_port.hpp -4298e1795a43964162145ce02971f27a *ports/msp430/qv/qs_port.hpp +9fe0bc88c876080155359beef966d20e *ports/msp430/qv/qs_port.hpp e263c1dff4c90e29da7250e9581872bc *ports/msp430/qutest/qp_port.hpp -4298e1795a43964162145ce02971f27a *ports/msp430/qutest/qs_port.hpp +9fe0bc88c876080155359beef966d20e *ports/msp430/qutest/qs_port.hpp 93766c6a0c4b71d4ab3325448f2123c1 *ports/pic32/qk/xc32/qk_port.cpp 77dc85dd965856b92713b053a9e5456c *ports/pic32/qk/xc32/qp_port.hpp -593f647601a840935442920b371cbb8f *ports/pic32/qk/xc32/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/pic32/qk/xc32/qs_port.hpp c40714b55d55e955163ba501bc76486b *ports/pic32/qv/xc32/qp_port.hpp -593f647601a840935442920b371cbb8f *ports/pic32/qv/xc32/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/pic32/qv/xc32/qs_port.hpp f06c0d53c5c9918f08e99e01e20af046 *ports/pic32/qutest/xc32/qp_port.hpp -8769dc506ab52067b0a374e5765525d3 *ports/pic32/qutest/xc32/qs_port.hpp -77ee959e7ece547ca6d15ba753af987f *ports/config/qp_config.hpp +41482d0d440eee366e7b4814c6d10235 *ports/pic32/qutest/xc32/qs_port.hpp +bbfb2c7c7901538009f523b4837501cd *ports/config/qp_config.hpp 906dd67f13bf4cdfb83afc1c59c57ed2 *ports/embos/CMakeLists.txt c3bf7454d756ae63ee0b69fb9671478f *ports/embos/qf_port.cpp 0d7461d523df40ff7e33b0be5ae47048 *ports/embos/qp_port.hpp -5f098b1f50529ede0aff7e065d1234ef *ports/embos/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/embos/qs_port.hpp bb18f0378bf49ece5551b7631efc3229 *ports/freertos/CMakeLists.txt ce95f7bb92b80a759a69db63a535df80 *ports/freertos/qf_port.cpp 0c444889e3db0ba221db1421d7a48d64 *ports/freertos/qp_port.hpp -f1d2ad95d14899edf65a236f1df4cfce *ports/freertos/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/freertos/qs_port.hpp 75e3906b6c068c7b59cf0c9a7a3c7454 *ports/threadx/CMakeLists.txt 79cdcd34a0393f77edee99ceb53709a5 *ports/threadx/qf_port.cpp 50f5bd76fc61e90edb546f2e11fc39e8 *ports/threadx/qp_port.hpp -5f098b1f50529ede0aff7e065d1234ef *ports/threadx/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/threadx/qs_port.hpp 23b496a982c574af2a47d01eb79e47f2 *ports/threadx/README.md ae8b2f8b0649c8dfacbf6495fa560ad8 *ports/uc-os2/CMakeLists.txt 297438508fad9376be5cc20642b9bc80 *ports/uc-os2/qf_port.cpp f3c0b50eb1d3db891235d862dc398c18 *ports/uc-os2/qp_port.hpp -5f098b1f50529ede0aff7e065d1234ef *ports/uc-os2/qs_port.hpp +41482d0d440eee366e7b4814c6d10235 *ports/uc-os2/qs_port.hpp bb83d2a07ba0eb25a09bd64da602e3fa *ports/qep-only/CMakeLists.txt ec8563c61bcb8cb4682b7bc4ffc67d0a *ports/qep-only/qp_port.hpp 7955fc33c291eb6b8ebabaae0d6bd0da *ports/qep-only/safe_std.h @@ -131,19 +131,19 @@ a29450c971859f6191f37c937b012eae *ports/posix/CMakeLists.txt a78cc40df8e511983e4f51b5233345d9 *ports/posix/qf_port.cpp 52e4d5e5d1113a3a0831aac6a44a3d21 *ports/posix/qp_port.hpp ae25ce9cf24260ec8affa08170f9d15a *ports/posix/qs_port.cpp -dab4a85af98e1c67aa8de87b22e048c1 *ports/posix/qs_port.hpp +91e88a47256436209fc651881283230d *ports/posix/qs_port.hpp f45c6f63edac95fd0b5d9cbeaa1f3926 *ports/posix/README.md 7955fc33c291eb6b8ebabaae0d6bd0da *ports/posix/safe_std.h bbfb6bd8a58a8d5591f61b05b460cec5 *ports/posix-qv/CMakeLists.txt 3d1f2fa3662328387bbfa4cb974a7017 *ports/posix-qv/qf_port.cpp 221db06f9b4381533c738f1ca177f8cf *ports/posix-qv/qp_port.hpp ae25ce9cf24260ec8affa08170f9d15a *ports/posix-qv/qs_port.cpp -dab4a85af98e1c67aa8de87b22e048c1 *ports/posix-qv/qs_port.hpp +91e88a47256436209fc651881283230d *ports/posix-qv/qs_port.hpp 72ee0355e2e9b6bd2a1e4c32480f361a *ports/posix-qv/README.md 7955fc33c291eb6b8ebabaae0d6bd0da *ports/posix-qv/safe_std.h 2171085568a15c190c72b106ea3c11b6 *ports/posix-qutest/CMakeLists.txt bc92f9570cafbe645318e54af34933e9 *ports/posix-qutest/qp_port.hpp -e898e8f446a8fcfd84b5092144b21ef3 *ports/posix-qutest/qs_port.hpp +91e88a47256436209fc651881283230d *ports/posix-qutest/qs_port.hpp 2b993b3de35967e54388740f67d4be2c *ports/posix-qutest/qutest_port.cpp 0ac7e3d28e684d07baacdcd0d3e65c4a *ports/posix-qutest/README.md 7955fc33c291eb6b8ebabaae0d6bd0da *ports/posix-qutest/safe_std.h @@ -151,7 +151,7 @@ e898e8f446a8fcfd84b5092144b21ef3 *ports/posix-qutest/qs_port.hpp b98e9825ffcbd8178145207316bf7910 *ports/win32/qf_port.cpp fc5a9085222501f994b6d517d6624a52 *ports/win32/qp_port.hpp b53aafe66b369a2e54344c792e481c1c *ports/win32/qs_port.cpp -7fb4d8aa04a203af95a365f6a56f89b3 *ports/win32/qs_port.hpp +91e88a47256436209fc651881283230d *ports/win32/qs_port.hpp a1c6143aa627599750360c58f4740129 *ports/win32/qwin_gui.c 64172552524a5e6449168adedfd858b0 *ports/win32/qwin_gui.h 84d25d92b6521b22736719d3ed33c289 *ports/win32/README.md @@ -160,14 +160,14 @@ a1c6143aa627599750360c58f4740129 *ports/win32/qwin_gui.c 7145fb32942db86db0dd6e7f090705a7 *ports/win32-qv/qf_port.cpp 38fbe14322593c37bdfe39c121e058fb *ports/win32-qv/qp_port.hpp b53aafe66b369a2e54344c792e481c1c *ports/win32-qv/qs_port.cpp -7fb4d8aa04a203af95a365f6a56f89b3 *ports/win32-qv/qs_port.hpp +91e88a47256436209fc651881283230d *ports/win32-qv/qs_port.hpp a1c6143aa627599750360c58f4740129 *ports/win32-qv/qwin_gui.c 64172552524a5e6449168adedfd858b0 *ports/win32-qv/qwin_gui.h 4b910f53af0a91e12da39391840e396d *ports/win32-qv/README.md 7955fc33c291eb6b8ebabaae0d6bd0da *ports/win32-qv/safe_std.h 3d3f6d71f8afe29ec99b50b17fa84b65 *ports/win32-qutest/CMakeLists.txt c7cac095c6af24752bb87d63aba5beaf *ports/win32-qutest/qp_port.hpp -7fb4d8aa04a203af95a365f6a56f89b3 *ports/win32-qutest/qs_port.hpp +91e88a47256436209fc651881283230d *ports/win32-qutest/qs_port.hpp c6f58183235c7dd685200b38808de610 *ports/win32-qutest/qutest_port.cpp 7955fc33c291eb6b8ebabaae0d6bd0da *ports/win32-qutest/safe_std.h 1595522f609b1198a88aff4523334557 *zephyr/CMakeLists.txt diff --git a/qpcpp.qm b/qpcpp.qm index 2ea92c69..4df6df8a 100644 --- a/qpcpp.qm +++ b/qpcpp.qm @@ -76,16 +76,9 @@ Contact information: {0xE0U}; - + : std::uint8_t { DYNAMIC }; - - - noexcept - - - Q_UNUSED_PAR(dummy); - noexcept @@ -99,6 +92,19 @@ Contact information: = delete + + + noexcept + // no event parameters to initialize + + + + noexcept + + + static_cast<void>(dummy); +// no event parameters to initialize + noexcept @@ -3498,7 +3504,15 @@ QF_CRIT_EXIT(); - m_frontEvt = nullptr; // no events in the queue + QF_CRIT_STAT +QF_CRIT_ENTRY(); +QF_MEM_SYS(); + +#if (QF_EQUEUE_CTR_SIZE == 1U) +Q_REQUIRE_INCRIT(100, qLen < 0xFFU); +#endif + +m_frontEvt = nullptr; // no events in the queue m_ring = &qSto[0]; m_end = static_cast<QEQueueCtr>(qLen); if (qLen > 0U) { @@ -3506,7 +3520,10 @@ if (qLen > 0U) { m_tail = 0U; } m_nFree = static_cast<QEQueueCtr>(qLen + 1U); //+1 for frontEvt -m_nMin = m_nFree; +m_nMin = m_nFree; + +QF_MEM_APP(); +QF_CRIT_EXIT(); @@ -3793,7 +3810,7 @@ Q_ASSERT_INCRIT(110, poolSize >= m_blockSize); // start at the head of the free list QFreeBlock *fb = m_free_head; -m_nTot = 1U; // the last block already in the list +std::uint32_t nTot = 1U; // the last block already in the list // chain all blocks together in a free-list... for (std::uint_fast32_t size = poolSize - m_blockSize; @@ -3805,15 +3822,22 @@ for (std::uint_fast32_t size = poolSize - m_blockSize; fb->m_next_dis = ~Q_UINTPTR_CAST_(fb->m_next); #endif fb = fb->m_next; // advance to the next block - ++m_nTot; // one more free block in the pool + ++nTot; // one more free block in the pool } +// dynamic range check +#if (QF_MPOOL_CTR_SIZE == 1U) +Q_ENSURE_INCRIT(190, nTot < 0xFFU); +#elif (QF_MPOOL_CTR_SIZE == 2U) +Q_ENSURE_INCRIT(190, nTot < 0xFFFFU); +#endif + fb->m_next = nullptr; // the last link points to NULL #ifndef Q_UNSAFE fb->m_next_dis = ~Q_UINTPTR_CAST_(fb->m_next); #endif -fb->m_next = nullptr; // the last link points to NULL +m_nTot = static_cast<QMPoolCtr>(nTot); m_nFree = m_nTot; // all blocks are free m_nMin = m_nTot; // the minimum # free blocks m_start = static_cast<QFreeBlock *>(poolSto); // original start @@ -4349,42 +4373,26 @@ QF_CRIT_EXIT(); gc(evtRef); // recycle the referenced event #endif - - - noexcept - - - - - - - - - - noexcept - - - - + return static_cast<evtT_*>( QP::QF::newX_(sizeof(evtT_), QP::QF::NO_MARGIN, sig)); - + evtT_ *e = static_cast<evtT_*>( QP::QF::newX_(sizeof(evtT_), QP::QF::NO_MARGIN, sig)); -e->ctor(args...); // e cannot be nullptr +e->init(args...); // e cannot be nullptr return e; - + @@ -4392,7 +4400,7 @@ return e; return static_cast<evtT_*>(QP::QF::newX_(sizeof(evtT_), margin, sig)); - + @@ -4401,7 +4409,7 @@ return e; evtT_ *e = static_cast<evtT_*>(QP::QF::newX_(sizeof(evtT_), margin, sig)); if (e != nullptr) { - e->ctor(args...); + e->init(args...); } return e; @@ -4420,6 +4428,22 @@ return e; QP::QF::deleteRef_(evtRef); evtRef = nullptr; + + + noexcept + + + + + + + + + + noexcept + + + @@ -4444,7 +4468,7 @@ evtRef = nullptr; (static_cast<QP::QPrioSpec>((prio_) | (pthre_) << 8U)) - + @@ -4452,7 +4476,7 @@ evtRef = nullptr; (QP::QF::q_new<evtT_>((sig_))) - + @@ -4462,7 +4486,7 @@ evtRef = nullptr; (QP::QF::q_new<evtT_>((sig_), __VA_ARGS__)) - + @@ -4472,7 +4496,7 @@ evtRef = nullptr; (QP::QF::q_new_x<evtT_>((margin_), (sig_))) - + @@ -8504,9 +8528,9 @@ if (QS_GLB_CHECK_(rec_) && QS_LOC_CHECK_(qsId_)) { \ #define QP_HPP_ //============================================================================ -#define QP_VERSION_STR "7.3.5-rc.2" -#define QP_VERSION 735U -#define QP_RELEASE 0x70A1DEF0U +#define QP_VERSION_STR "7.4.0-rc.1" +#define QP_VERSION 740U +#define QP_RELEASE 0x7092C3BBU //============================================================================ //! @cond INTERNAL @@ -9349,7 +9373,12 @@ extern char const BUILD_TIME[9]; //============================================================================ // QP/C++ API compatibility layer... -#if (QP_API_VERSION < 730) +#if (QP_API_VERSION < 740) + +#ifdef QEVT_DYN_CTOR +//! @deprecated #QEVT_DYN_CTOR, please use #QEVT_PAR_INIT +#define QEVT_PAR_INIT +#endif //! @deprecated plain 'char' is no longer forbidden in MISRA/AUTOSAR-C++ using char_t = char; @@ -9746,7 +9775,6 @@ namespace { Q_DEFINE_THIS_MODULE("qf_dyn") } // unnamed namespace -$define ${QEP::QEvt::ctor} $define ${QF::QF-dyn} #endif // (QF_MAX_EPOOL > 0U) mutable events configured diff --git a/src/qf/qf_dyn.cpp b/src/qf/qf_dyn.cpp index ea500f9c..6ed3aa20 100644 --- a/src/qf/qf_dyn.cpp +++ b/src/qf/qf_dyn.cpp @@ -65,19 +65,6 @@ Q_DEFINE_THIS_MODULE("qf_dyn") #endif //$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//$define${QEP::QEvt::ctor} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv -namespace QP { - -//${QEP::QEvt::ctor} ......................................................... -#ifdef QEVT_DYN_CTOR -void QEvt::ctor(DynEvt const dummy) noexcept { - Q_UNUSED_PAR(dummy); -} - -#endif // def QEVT_DYN_CTOR - -} // namespace QP -//$enddef${QEP::QEvt::ctor} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //$define${QF::QF-dyn} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv namespace QP { namespace QF { diff --git a/src/qf/qf_mem.cpp b/src/qf/qf_mem.cpp index b8d1383c..a5d51079 100644 --- a/src/qf/qf_mem.cpp +++ b/src/qf/qf_mem.cpp @@ -98,7 +98,7 @@ void QMPool::init( // start at the head of the free list QFreeBlock *fb = m_free_head; - m_nTot = 1U; // the last block already in the list + std::uint32_t nTot = 1U; // the last block already in the list // chain all blocks together in a free-list... for (std::uint_fast32_t size = poolSize - m_blockSize; @@ -110,15 +110,22 @@ void QMPool::init( fb->m_next_dis = ~Q_UINTPTR_CAST_(fb->m_next); #endif fb = fb->m_next; // advance to the next block - ++m_nTot; // one more free block in the pool + ++nTot; // one more free block in the pool } + // dynamic range check + #if (QF_MPOOL_CTR_SIZE == 1U) + Q_ENSURE_INCRIT(190, nTot < 0xFFU); + #elif (QF_MPOOL_CTR_SIZE == 2U) + Q_ENSURE_INCRIT(190, nTot < 0xFFFFU); + #endif + fb->m_next = nullptr; // the last link points to NULL #ifndef Q_UNSAFE fb->m_next_dis = ~Q_UINTPTR_CAST_(fb->m_next); #endif - fb->m_next = nullptr; // the last link points to NULL + m_nTot = static_cast(nTot); m_nFree = m_nTot; // all blocks are free m_nMin = m_nTot; // the minimum # free blocks m_start = static_cast(poolSto); // original start diff --git a/src/qf/qf_qeq.cpp b/src/qf/qf_qeq.cpp index 95b23458..2231c023 100644 --- a/src/qf/qf_qeq.cpp +++ b/src/qf/qf_qeq.cpp @@ -73,6 +73,14 @@ void QEQueue::init( QEvt const * qSto[], std::uint_fast16_t const qLen) noexcept { + QF_CRIT_STAT + QF_CRIT_ENTRY(); + QF_MEM_SYS(); + + #if (QF_EQUEUE_CTR_SIZE == 1U) + Q_REQUIRE_INCRIT(100, qLen < 0xFFU); + #endif + m_frontEvt = nullptr; // no events in the queue m_ring = &qSto[0]; m_end = static_cast(qLen); @@ -82,6 +90,9 @@ void QEQueue::init( } m_nFree = static_cast(qLen + 1U); //+1 for frontEvt m_nMin = m_nFree; + + QF_MEM_APP(); + QF_CRIT_EXIT(); } //${QF::QEQueue::post} .......................................................