forked from len0rd/rockbox
Add queue_peek to the kernel (written by Mike Sevakis), and use it to improve upon my previous commit.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15336 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
41add08c5e
commit
1839edf64a
4 changed files with 52 additions and 3 deletions
|
@ -405,6 +405,26 @@ bool queue_empty(const struct event_queue* q)
|
|||
return ( q->read == q->write );
|
||||
}
|
||||
|
||||
bool queue_peek(struct event_queue *q, struct queue_event *ev)
|
||||
{
|
||||
if (q->read == q->write)
|
||||
return false;
|
||||
|
||||
bool have_msg = false;
|
||||
|
||||
int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL);
|
||||
|
||||
if (q->read != q->write)
|
||||
{
|
||||
*ev = q->events[q->read & QUEUE_LENGTH_MASK];
|
||||
have_msg = true;
|
||||
}
|
||||
|
||||
set_irq_level(oldlevel);
|
||||
|
||||
return have_msg;
|
||||
}
|
||||
|
||||
void queue_clear(struct event_queue* q)
|
||||
{
|
||||
int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue