Process only one poll request at a time to avoid starvation if one process keeps calling process_poll() from its poll handler
This commit is contained in:
parent
1b024d6e69
commit
f93a48599e
1 changed files with 9 additions and 11 deletions
|
@ -28,7 +28,7 @@
|
|||
*
|
||||
* This file is part of the Contiki operating system.
|
||||
*
|
||||
* @(#)$Id: process.c,v 1.7 2008/01/23 21:06:25 adamdunkels Exp $
|
||||
* @(#)$Id: process.c,v 1.8 2008/01/24 21:00:51 adamdunkels Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -234,17 +234,15 @@ do_poll(void)
|
|||
{
|
||||
struct process *p;
|
||||
|
||||
do {
|
||||
poll_requested = 0;
|
||||
/* Call the processes that needs to be polled. */
|
||||
for(p = process_list; p != NULL; p = p->next) {
|
||||
if(p->needspoll) {
|
||||
p->state = PROCESS_STATE_RUNNING;
|
||||
p->needspoll = 0;
|
||||
call_process(p, PROCESS_EVENT_POLL, NULL);
|
||||
}
|
||||
poll_requested = 0;
|
||||
/* Call the processes that needs to be polled. */
|
||||
for(p = process_list; p != NULL; p = p->next) {
|
||||
if(p->needspoll) {
|
||||
p->state = PROCESS_STATE_RUNNING;
|
||||
p->needspoll = 0;
|
||||
call_process(p, PROCESS_EVENT_POLL, NULL);
|
||||
}
|
||||
} while(poll_requested);
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue