arch: Remove critical section inside up_schedule_sigaction
since nxsig_tcbdispatch already hold it for us Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com> Change-Id: I2fe6ad840bdca3ec0eaa76a9af3b6929c7d5a721
This commit is contained in:
parent
394cfba1d8
commit
94da3e4c3a
@ -86,18 +86,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -184,6 +181,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_CPSR] = SVC_MODE | PSR_I_BIT | PSR_F_BIT;
|
tcb->xcp.regs[REG_CPSR] = SVC_MODE | PSR_I_BIT | PSR_F_BIT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -87,18 +87,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -194,6 +191,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -73,19 +73,16 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -180,24 +177,17 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* !CONFIG_SMP */
|
#endif /* !CONFIG_SMP */
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
int cpu;
|
int cpu;
|
||||||
int me;
|
int me;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -364,7 +354,5 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
@ -75,20 +75,17 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
DEBUGASSERT(tcb != NULL && sigdeliver != NULL);
|
DEBUGASSERT(tcb != NULL && sigdeliver != NULL);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (tcb->xcp.sigdeliver == NULL)
|
if (tcb->xcp.sigdeliver == NULL)
|
||||||
@ -203,24 +200,17 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* !CONFIG_SMP */
|
#endif /* !CONFIG_SMP */
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
int cpu;
|
int cpu;
|
||||||
int me;
|
int me;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -425,7 +415,5 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
@ -71,18 +71,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -178,6 +175,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -75,20 +75,17 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
DEBUGASSERT(tcb != NULL && sigdeliver != NULL);
|
DEBUGASSERT(tcb != NULL && sigdeliver != NULL);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (tcb->xcp.sigdeliver == NULL)
|
if (tcb->xcp.sigdeliver == NULL)
|
||||||
@ -203,24 +200,17 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* !CONFIG_SMP */
|
#endif /* !CONFIG_SMP */
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
int cpu;
|
int cpu;
|
||||||
int me;
|
int me;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -429,7 +419,5 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
@ -86,19 +86,17 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
uintptr_t reg_ptr = (uintptr_t)up_sigdeliver;
|
uintptr_t reg_ptr = (uintptr_t)up_sigdeliver;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -209,6 +207,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_SREG] &= ~(1 << SREG_I);
|
tcb->xcp.regs[REG_SREG] &= ~(1 << SREG_I);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -86,18 +86,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -185,6 +182,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_SR] |= AVR32_SR_GM_MASK;
|
tcb->xcp.regs[REG_SR] |= AVR32_SR_GM_MASK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -87,19 +87,17 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
uint32_t status;
|
uint32_t status;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -203,6 +201,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_STATUS]);
|
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_STATUS]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -90,18 +90,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -196,6 +193,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_STATUS]);
|
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_STATUS]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -91,18 +91,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -196,6 +193,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_CSR_MEPC], tcb->xcp.regs[REG_CSR_MSTATUS]);
|
tcb->xcp.regs[REG_CSR_MEPC], tcb->xcp.regs[REG_CSR_MSTATUS]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -85,18 +85,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -188,6 +185,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -85,18 +85,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -181,6 +178,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_FLG] &= ~M16C_FLG_I;
|
tcb->xcp.regs[REG_FLG] &= ~M16C_FLG_I;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -70,18 +70,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -162,6 +159,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_PSW] |= 0x00030000;
|
tcb->xcp.regs[REG_PSW] |= 0x00030000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -85,18 +85,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -177,6 +174,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_SR] |= 0x000000f0 ;
|
tcb->xcp.regs[REG_SR] |= 0x000000f0 ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -90,11 +90,13 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
uint32_t int_ctx;
|
uint32_t int_ctx;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
@ -194,6 +196,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_STATUS]);
|
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_STATUS]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -91,19 +91,17 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
uint32_t int_ctx;
|
uint32_t int_ctx;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -204,6 +202,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_STATUS]);
|
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_STATUS]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -71,19 +71,17 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
uint32_t int_ctx;
|
uint32_t int_ctx;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -189,7 +187,5 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_INT_CTX]);
|
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_INT_CTX]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,20 +88,18 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
uint64_t int_ctx;
|
uint64_t int_ctx;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -212,25 +210,18 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_INT_CTX]);
|
tcb->xcp.regs[REG_EPC], tcb->xcp.regs[REG_INT_CTX]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* !CONFIG_SMP */
|
#endif /* !CONFIG_SMP */
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
uint64_t int_ctx;
|
uint64_t int_ctx;
|
||||||
int cpu;
|
int cpu;
|
||||||
int me;
|
int me;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -401,7 +392,5 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_INT_CTX] = int_ctx;
|
tcb->xcp.regs[REG_INT_CTX] = int_ctx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
@ -82,6 +82,9 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
|
@ -81,18 +81,15 @@
|
|||||||
* (3) If not in an interrupt handler and the tcb IS the currently
|
* (3) If not in an interrupt handler and the tcb IS the currently
|
||||||
* executing task -- just call the signal handler now.
|
* executing task -- just call the signal handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -178,6 +175,4 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_EFLAGS] = 0;
|
tcb->xcp.regs[REG_EFLAGS] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -80,19 +80,16 @@
|
|||||||
* (3) If not in an interrupt handler and the tcb IS the currently
|
* (3) If not in an interrupt handler and the tcb IS the currently
|
||||||
* executing task -- just call the signal handler now.
|
* executing task -- just call the signal handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
sinfo("rtcb=0x%p g_current_regs=0x%p\n", this_task(), g_current_regs);
|
sinfo("rtcb=0x%p g_current_regs=0x%p\n", this_task(), g_current_regs);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -178,8 +175,6 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_RFLAGS] = 0;
|
tcb->xcp.regs[REG_RFLAGS] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* !CONFIG_DISABLE_SIGNALS */
|
#endif /* !CONFIG_DISABLE_SIGNALS */
|
||||||
|
@ -86,19 +86,16 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -200,24 +197,17 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* !CONFIG_SMP */
|
#endif /* !CONFIG_SMP */
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
int cpu;
|
int cpu;
|
||||||
int me;
|
int me;
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -393,7 +383,5 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
@ -69,18 +69,15 @@
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%06x\n", tcb, (uint32_t)sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%06x\n", tcb, (uint32_t)sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (!tcb->xcp.sigdeliver)
|
if (!tcb->xcp.sigdeliver)
|
||||||
@ -165,6 +162,4 @@ void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
tcb->xcp.regs[REG_FLAGS] = 0;
|
tcb->xcp.regs[REG_FLAGS] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -95,18 +95,15 @@ static void ez80_sigsetup(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver,
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%04x\n", tcb, (uint16_t)sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%04x\n", tcb, (uint16_t)sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (tcb->xcp.sigdeliver == NULL)
|
if (tcb->xcp.sigdeliver == NULL)
|
||||||
@ -162,6 +159,4 @@ void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
ez80_sigsetup(tcb, sigdeliver, tcb->xcp.regs);
|
ez80_sigsetup(tcb, sigdeliver, tcb->xcp.regs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -113,18 +113,15 @@ static void z180_sigsetup(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver,
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
_info("tcb=0x%p sigdeliver=0x%04x\n", tcb, (uint16_t)sigdeliver);
|
_info("tcb=0x%p sigdeliver=0x%04x\n", tcb, (uint16_t)sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (tcb->xcp.sigdeliver == NULL)
|
if (tcb->xcp.sigdeliver == NULL)
|
||||||
@ -181,6 +178,4 @@ void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
z180_sigsetup(tcb, sigdeliver, tcb->xcp.regs);
|
z180_sigsetup(tcb, sigdeliver, tcb->xcp.regs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -110,18 +110,15 @@ static void z8_sigsetup(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver,
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
sinfo("tcb=0x%p sigdeliver=0x%04x\n", tcb, (uint16_t)sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%04x\n", tcb, (uint16_t)sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (tcb->xcp.sigdeliver == NULL)
|
if (tcb->xcp.sigdeliver == NULL)
|
||||||
@ -180,6 +177,4 @@ void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
z8_sigsetup(tcb, sigdeliver, tcb->xcp.regs);
|
z8_sigsetup(tcb, sigdeliver, tcb->xcp.regs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
@ -111,18 +111,15 @@ static void z80_sigsetup(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver,
|
|||||||
* currently executing task -- just call the signal
|
* currently executing task -- just call the signal
|
||||||
* handler now.
|
* handler now.
|
||||||
*
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* Called from critical section
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
||||||
{
|
{
|
||||||
irqstate_t flags;
|
|
||||||
|
|
||||||
_info("tcb=0x%p sigdeliver=0x%04x\n", tcb, (uint16_t)sigdeliver);
|
_info("tcb=0x%p sigdeliver=0x%04x\n", tcb, (uint16_t)sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
|
||||||
|
|
||||||
flags = enter_critical_section();
|
|
||||||
|
|
||||||
/* Refuse to handle nested signal actions */
|
/* Refuse to handle nested signal actions */
|
||||||
|
|
||||||
if (tcb->xcp.sigdeliver == NULL)
|
if (tcb->xcp.sigdeliver == NULL)
|
||||||
@ -179,6 +176,4 @@ void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
z80_sigsetup(tcb, sigdeliver, tcb->xcp.regs);
|
z80_sigsetup(tcb, sigdeliver, tcb->xcp.regs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user