Semaphores: sem_waitirq.c must be built when signals are disabled. That is because not handles not only the case of semaphore wait being awakened by a signal, but also the case with sem_timedwait.c when the semaphore wait is awakened by a timeout.
This commit is contained in:
parent
78b755961f
commit
826f5516ff
@ -1,5 +1,5 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* sched/mqueue/mq_waitirq.c
|
* sched/mqueue/mq_waitirq.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2009, 2011, 2014 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007-2009, 2011, 2014 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
@ -72,7 +72,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: sem_waitirq
|
* Name: mq_waitirq
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* This function is called when a signal or a timeout is received by a
|
* This function is called when a signal or a timeout is received by a
|
||||||
|
@ -34,11 +34,7 @@
|
|||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
CSRCS += sem_destroy.c sem_wait.c sem_trywait.c sem_timedwait.c
|
CSRCS += sem_destroy.c sem_wait.c sem_trywait.c sem_timedwait.c
|
||||||
CSRCS += sem_post.c sem_recover.c
|
CSRCS += sem_post.c sem_recover.c sem_waitirq.c
|
||||||
|
|
||||||
ifneq ($(CONFIG_DISABLE_SIGNALS),y)
|
|
||||||
CSRCS += sem_waitirq.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_PRIORITY_INHERITANCE),y)
|
ifeq ($(CONFIG_PRIORITY_INHERITANCE),y)
|
||||||
CSRCS += sem_initialize.c sem_holder.c
|
CSRCS += sem_initialize.c sem_holder.c
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* sched/semaphore/sem_waitirq.c
|
* sched/semaphore/sem_waitirq.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007-2010, 2014 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -46,7 +46,7 @@
|
|||||||
#include "semaphore/semaphore.h"
|
#include "semaphore/semaphore.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Definitions
|
* Pre-processor Definitions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -73,10 +73,14 @@
|
|||||||
* Name: sem_waitirq
|
* Name: sem_waitirq
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* This function is called when a signal is received by a task that is
|
* This function is called when either:
|
||||||
* waiting on a semaphore. According to the POSIX spec, "...the calling
|
*
|
||||||
* thread shall not return from the call to [sem_wait] until it either
|
* 1. A signal is received by a task that is waiting on a semaphore.
|
||||||
* locks the semaphore or the call is interrupted by a signal."
|
* According to the POSIX spec, "...the calling thread shall not return
|
||||||
|
* from the call to [sem_wait] until it either locks the semaphore or
|
||||||
|
* the call is interrupted by a signal."
|
||||||
|
* 2. From logic associated with sem_timedwait(). This function is called
|
||||||
|
* when the timeout elapses without receiving the semaphore.
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* wtcb - A pointer to the TCB of the task that is waiting on a
|
* wtcb - A pointer to the TCB of the task that is waiting on a
|
||||||
@ -142,4 +146,3 @@ void sem_waitirq(FAR struct tcb_s *wtcb, int errcode)
|
|||||||
|
|
||||||
irqrestore(saved_state);
|
irqrestore(saved_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user