QP/C
qk_pkg.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002 * Product: QK/C
00003 * Last Updated for Version: 4.4.00
00004 * Date of the Last Update:  Jan 04, 2012
00005 *
00006 *                    Q u a n t u m     L e a P s
00007 *                    ---------------------------
00008 *                    innovating embedded systems
00009 *
00010 * Copyright (C) 2002-2012 Quantum Leaps, LLC. All rights reserved.
00011 *
00012 * This software may be distributed and modified under the terms of the GNU
00013 * General Public License version 2 (GPL) as published by the Free Software
00014 * Foundation and appearing in the file GPL.TXT included in the packaging of
00015 * this file. Please note that GPL Section 2[b] requires that all works based
00016 * on this software must also be made publicly available under the terms of
00017 * the GPL ("Copyleft").
00018 *
00019 * Alternatively, this software may be distributed and modified under the
00020 * terms of Quantum Leaps commercial licenses, which expressly supersede
00021 * the GPL and are specifically designed for licensees interested in
00022 * retaining the proprietary status of their code.
00023 *
00024 * Contact information:
00025 * Quantum Leaps Web site:  http://www.quantum-leaps.com
00026 * e-mail:                  info@quantum-leaps.com
00027 *****************************************************************************/
00028 #ifndef qk_pkg_h
00029 #define qk_pkg_h
00030 
00037 #include "qf_port.h"                 /* QF port include; includes qk_port.h */
00038 
00039                                             /* QF-specific critical section */
00040 #ifndef QF_CRIT_STAT_TYPE
00041 
00051     #define QF_CRIT_STAT_
00052 
00062     #define QF_CRIT_ENTRY_()    QF_CRIT_ENTRY(dummy)
00063 
00073     #define QF_CRIT_EXIT_()     QF_CRIT_EXIT(dummy)
00074 
00075 #else
00076     #define QF_CRIT_STAT_       QF_CRIT_STAT_TYPE critStat_;
00077     #define QF_CRIT_ENTRY_()    QF_CRIT_ENTRY(critStat_)
00078     #define QF_CRIT_EXIT_()     QF_CRIT_EXIT(critStat_)
00079 #endif
00080                           /* define for backwards compatibility, see NOTE01 */
00081 #ifndef QF_CRIT_STAT_TYPE
00082 #if !defined(QF_INT_DISABLE) && defined(QF_CRIT_ENTRY)
00083     #define QF_INT_DISABLE()    QF_CRIT_ENTRY(dummy)
00084 #endif
00085 #if !defined(QF_INT_ENABLE) && defined(QF_CRIT_EXIT)
00086     #define QF_INT_ENABLE()     QF_CRIT_EXIT(dummy)
00087 #endif
00088 #endif                                                 /* QF_CRIT_STAT_TYPE */
00089 
00090                                                 /* package-scope objects... */
00091 #ifndef QK_NO_MUTEX
00092     extern uint8_t QK_ceilingPrio_;          
00093 #endif
00094 
00095 /*****************************************************************************
00096 * NOTE01: For older QK ports that used the simple "unconditional interrupt
00097 * locking and unlocking" policy, the interrupt disabling and enabling can be
00098 * derived from the critical section definition.
00099 */
00100 
00101 #endif                                                          /* qk_pkg_h */
00102 
00103 /****************************************************************************/
00104 /* QS software tracing integration, only if enabled                         */
00105 #ifdef Q_SPY                                /* QS software tracing enabled? */
00106     #ifndef qs_h
00107     #include "qs_port.h"                                 /* include QS port */
00108     #endif                                                          /* qs_h */
00109 #else
00110     #ifndef qs_dummy_h
00111     #include "qs_dummy.h"                /* disable the QS software tracing */
00112     #endif
00113 #endif                                                             /* Q_SPY */