1
0
Fork 0
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:
Nicolas Pennequin 2007-10-27 18:08:18 +00:00
parent 41add08c5e
commit 1839edf64a
4 changed files with 52 additions and 3 deletions

View file

@ -537,6 +537,28 @@ 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);
corelock_lock(&q->cl);
if (q->read != q->write)
{
*ev = q->events[q->read & QUEUE_LENGTH_MASK];
have_msg = true;
}
corelock_unlock(&q->cl);
set_irq_level(oldlevel);
return have_msg;
}
void queue_clear(struct event_queue* q)
{
int oldlevel;