Dining Philosophers Problem (DPP) example for the QP active object framework. Demonstrates: event-driven programming, hierarchical state machines in C++, modeling and graphical state machine design, code generation, preemptive multitasking, software tracing, power saving mode, direct event posting, publish-subscribe. More information available in the [[/users/QL/notebook|Quantum Leaps Notebook pages]]. See also [[http://www.state-machine.com|state-machine.com]].
Diff: main.cpp
- Revision:
- 3:81ceb3127876
- Parent:
- 0:efb9ac8d1a88
- Child:
- 4:6189d844a1a2
diff -r 2e62e514f323 -r 81ceb3127876 main.cpp --- a/main.cpp Wed Feb 16 17:12:38 2011 +0000 +++ b/main.cpp Mon Sep 26 02:21:01 2011 +0000 @@ -1,13 +1,13 @@ ////////////////////////////////////////////////////////////////////////////// // Product: DPP example -// Last Updated for Version: 4.0.00 -// Date of the Last Update: May 28, 2008 +// Last Updated for Version: 4.2.00 +// Date of the Last Update: Jul 23, 2011 // // Q u a n t u m L e a P s // --------------------------- // innovating embedded systems // -// Copyright (C) 2002-2008 Quantum Leaps, LLC. All rights reserved. +// Copyright (C) 2002-2011 Quantum Leaps, LLC. All rights reserved. // // This software may be distributed and modified under the terms of the GNU // General Public License version 2 (GPL) as published by the Free Software @@ -35,15 +35,18 @@ static QSubscrList l_subscrSto[MAX_PUB_SIG]; static union SmallEvents { - void *min_size; - TableEvt te; - // other event types to go into this pool + void *e0; // minimum event size + uint8_t e1[sizeof(TableEvt)]; + // ... other event types to go into this pool } l_smlPoolSto[2*N_PHILO]; // storage for the small event pool //............................................................................ -int main(void) { +int main() { + BSP_init(); // initialize the BSP + QF::init(); // initialize the framework and the underlying RT kernel + // object dictionaries... QS_OBJ_DICTIONARY(l_smlPoolSto); QS_OBJ_DICTIONARY(l_tableQueueSto); @@ -54,6 +57,7 @@ QS_OBJ_DICTIONARY(l_philoQueueSto[4]); QF::psInit(l_subscrSto, Q_DIM(l_subscrSto)); // init publish-subscribe + // initialize event pools... QF::poolInit(l_smlPoolSto, sizeof(l_smlPoolSto), sizeof(l_smlPoolSto[0])); @@ -72,4 +76,3 @@ return 0; } -