Fix an assertion
This commit is contained in:
parent
44450511d4
commit
961837eaaf
@ -4868,3 +4868,5 @@
|
|||||||
the SAM4L (2013-6-2).
|
the SAM4L (2013-6-2).
|
||||||
* libc/stdio/lib_dprintd.c and lib_vdprintf.c: Add dprintf() and
|
* libc/stdio/lib_dprintd.c and lib_vdprintf.c: Add dprintf() and
|
||||||
vdprintf() (the latter from Andrew Tridgell, 2013-6-2).
|
vdprintf() (the latter from Andrew Tridgell, 2013-6-2).
|
||||||
|
* sched/sem_holder.c: Modify assertion that is reported to cause
|
||||||
|
false alarm assertions (2013-6-2).
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
# This first group of C files do not depend on having file descriptors or
|
# This first group of C files do not depend on having file descriptors or
|
||||||
# C streams.
|
# C streams.
|
||||||
|
|
||||||
CSRCS += lib_fileno.c lib_printf.c lib_syslog.c lib_lowsyslog.c\
|
CSRCS += lib_fileno.c lib_printf.c lib_syslog.c lib_lowsyslog.c \
|
||||||
lib_sprintf.c lib_asprintf.c lib_snprintf.c lib_libsprintf.c \
|
lib_sprintf.c lib_asprintf.c lib_snprintf.c lib_libsprintf.c \
|
||||||
lib_vsprintf.c lib_avsprintf.c lib_vsnprintf.c lib_libvsprintf.c \
|
lib_vsprintf.c lib_avsprintf.c lib_vsnprintf.c lib_libvsprintf.c \
|
||||||
lib_dprintf.c lib_vdprintf.c \
|
lib_dprintf.c lib_vdprintf.c \
|
||||||
|
@ -448,11 +448,22 @@ static int sem_restoreholderprio(FAR struct semholder_s *pholder, FAR sem_t *sem
|
|||||||
|
|
||||||
if (htcb->npend_reprio < 1)
|
if (htcb->npend_reprio < 1)
|
||||||
{
|
{
|
||||||
/* No... the holder thread has only been boosted once. Reset all
|
/* No... the holder thread has only been boosted once.
|
||||||
* priorities back to the base priority.
|
* npend_reprio should be 0 and the boosted priority should be the
|
||||||
|
* priority of the task that just got the semaphore
|
||||||
|
* (stcb->sched_priority)
|
||||||
|
*
|
||||||
|
* That latter assumption may not be true if the stcb's priority
|
||||||
|
* was also boosted so that it no longer matches the htcb's
|
||||||
|
* sched_priority. Or if CONFIG_SEM_NNESTPRIO is too small (so
|
||||||
|
* that we do not have a proper record of the reprioritizations).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
DEBUGASSERT(htcb->sched_priority == stcb->sched_priority && htcb->npend_reprio == 0);
|
DEBUGASSERT(/* htcb->sched_priority == stcb->sched_priority && */
|
||||||
|
htcb->npend_reprio == 0);
|
||||||
|
|
||||||
|
/* Reset the holder's priority back to the base priority. */
|
||||||
|
|
||||||
sched_reprioritize(htcb, htcb->base_priority);
|
sched_reprioritize(htcb, htcb->base_priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user