EventFramework library allows the creation of an event-driven infrastructure in which small "threads" can handle events in a multithreaded execution context. The EventFramework can be configured to act as a cooperative or a fully-preemptive kernel with fixed-priority scheduling. Furthermore, this kernel matches run-to-completion semantics, and hence a single-stack configuration is enough to keep running this multithreaded execution environment. As running threads shares global stack, a huge quantity of RAM is saved in contrast with traditional RTOSes.
Revision 1:ec12f2e32faf, committed 2012-10-03
- Comitter:
- raulMrello
- Date:
- Wed Oct 03 21:02:16 2012 +0000
- Parent:
- 0:9d09acc8f9d9
- Commit message:
- Nesting correction on RestoreContext interface.; Erase invalid comment-block
Changed in this revision
EventFramework.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 9d09acc8f9d9 -r ec12f2e32faf EventFramework.cpp --- a/EventFramework.cpp Mon Oct 01 10:38:45 2012 +0000 +++ b/EventFramework.cpp Wed Oct 03 21:02:16 2012 +0000 @@ -155,6 +155,7 @@ void EventFramework::RestoreContext(void){ cbLock(); if(nesting > 1){ + nesting--; cbUnlock(); return; } @@ -215,23 +216,6 @@ currPrio = curr; cbUnlock(); } -// // extract most priority event -// Node* firstNode = queue->GetFirstNode(); -// this->event = (Event*)firstNode->GetData(); -// queue->Remove(firstNode); -// // if no more events, then free queue -// if(!queue->GetFirstNode()){ -// delete queue; -// queue = NULL; -// } -// // get event -// Node* nodeHnd = this->event->GetBase()->GetList()->GetFirstNode(); -// while(nodeHnd){ -// EventHandler* hnd = (EventHandler*)nodeHnd->GetData(); -// hnd->Execute(); -// nodeHnd = nodeHnd->GetNext(); -// } - }