Reference Manual For QP/C 8.1.5
Toggle main menu visibility
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
34
typedef
struct
{
35
QPSet
readySet
;
//!< @private @memberof QV
36
}
QV
;
37
38
//! @static @public @memberof QV
39
void
QV_onIdle
(
void
);
40
41
//! @static @private @memberof QV
42
extern
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_
QPSet
Set of Active Objects of up to QF_MAX_ACTIVE elements.
Definition
qp.h:412
QV
QV non-preemptive kernel.
Definition
qv.h:34
QV::QV_onIdle
void QV_onIdle(void)
QV idle callback (customized in BSPs for QV).
QV::readySet
QPSet readySet
Set of active-objects/threads that are ready to run in the QV kernel \clearpage .
Definition
qv.h:35
qpc
include
qv.h
©
Quantum Leaps
|
YouTube
|
GitHub
| created with
Spexygen
©
Quantum Leaps
|
YouTube
|
GitHub
| created with
Spexygen