Reference Manual For QP/C 8.1.5
Loading...
Searching...
No Matches
qv.h
Go to the documentation of this file.
1//============================================================================
2// QP/C Real-Time Event Framework (RTEF)
3//
4// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
5//
6// Q u a n t u m L e a P s
7// ------------------------
8// Modern Embedded Software
9//
10// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
11//
12// This software is dual-licensed under the terms of the open-source GNU
13// General Public License (GPL) or under the terms of one of the closed-
14// source Quantum Leaps commercial licenses.
15//
16// Redistributions in source code must retain this top-level comment block.
17// Plagiarizing this software to sidestep the license obligations is illegal.
18//
19// NOTE:
20// The GPL does NOT permit the incorporation of this code into proprietary
21// programs. Please contact Quantum Leaps for commercial licensing options,
22// which expressly supersede the GPL and are designed explicitly for
23// closed-source distribution.
24//
25// Quantum Leaps contact information:
26// <www.state-machine.com/licensing>
27// <info@state-machine.com>
28//============================================================================
29#ifndef QV_H_
30#define QV_H_
31
32//============================================================================
33//! @class QV
34typedef struct {
35 QPSet readySet; //!< @private @memberof QV
36} QV;
37
38//! @static @public @memberof QV
39void QV_onIdle(void);
40
41//! @static @private @memberof QV
42extern QV QV_priv_;
43
44//============================================================================
45// interface used only for internal implementation, but not in applications
46
47#ifdef QP_IMPL
48//! @cond INTERNAL
49
50// scheduler locking for QV (not needed)...
51#define QF_SCHED_STAT_
52#define QF_SCHED_LOCK_(dummy) ((void)0)
53#define QF_SCHED_UNLOCK_() ((void)0)
54
55// QActive event queue customization for QV...
56#define QACTIVE_EQUEUE_WAIT_(me_) ((void)0)
57#define QACTIVE_EQUEUE_SIGNAL_(me_) \
58 QPSet_insert(&QV_priv_.readySet, (uint_fast8_t)(me_)->prio)
59
60// QMPool operations
61#define QF_EPOOL_TYPE_ QMPool
62#define QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) \
63 (QMPool_init(&(p_), (poolSto_), (poolSize_), (evtSize_)))
64#define QF_EPOOL_EVENT_SIZE_(p_) ((uint16_t)(p_).blockSize)
65#define QF_EPOOL_GET_(p_, e_, m_, qsId_) \
66 ((e_) = (QEvt *)QMPool_get(&(p_), (m_), (qsId_)))
67#define QF_EPOOL_PUT_(p_, e_, qsId_) (QMPool_put(&(p_), (e_), (qsId_)))
68#define QF_EPOOL_USE_(ePool_) (QMPool_getUse(ePool_))
69#define QF_EPOOL_FREE_(ePool_) ((uint16_t)(ePool_)->nFree)
70#define QF_EPOOL_MIN_(ePool_) ((uint16_t)(ePool_)->nMin)
71
72//! @endcond
73#endif // QP_IMPL
74
75#endif // QV_H_
Set of Active Objects of up to QF_MAX_ACTIVE elements.
Definition qp.h:412
QV non-preemptive kernel.
Definition qv.h:34
void QV_onIdle(void)
QV idle callback (customized in BSPs for QV).
QPSet readySet
Set of active-objects/threads that are ready to run in the QV kernel \clearpage .
Definition qv.h:35