mirror of
https://github.com/apache/nuttx.git
synced 2026-06-05 15:58:59 +08:00
LP Work Queue: Fix test to find and idle worker thread.
This commit is contained in:
committed by
Gregory Nutt
parent
bc325bd597
commit
4b18b8d1e3
@@ -11577,4 +11577,6 @@
|
|||||||
* net/tcp/tcp_timer.c: Fix some logic when there are multiple network
|
* net/tcp/tcp_timer.c: Fix some logic when there are multiple network
|
||||||
interfaces. In this case, TCP timeout events can really only being
|
interfaces. In this case, TCP timeout events can really only being
|
||||||
processed when the poll from the correct device is received (2016-03-20).
|
processed when the poll from the correct device is received (2016-03-20).
|
||||||
|
* sched/wqueue/kwork_signal.c: Fix logic to find an IDLE worker thread;
|
||||||
|
the test for busy was backward. From Linfei Chen (2016-03-22).
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* sched/wqueue/work_signal.c
|
* sched/wqueue/work_signal.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2014, 2016 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
|
||||||
@@ -92,15 +92,19 @@ int work_signal(int qid)
|
|||||||
|
|
||||||
for (wndx = 0, i = 0; i < CONFIG_SCHED_LPNTHREADS; i++)
|
for (wndx = 0, i = 0; i < CONFIG_SCHED_LPNTHREADS; i++)
|
||||||
{
|
{
|
||||||
if (g_lpwork.worker[i].busy)
|
/* Is this worker thread busy? */
|
||||||
|
|
||||||
|
if (!g_lpwork.worker[i].busy)
|
||||||
{
|
{
|
||||||
|
/* No.. select this thread */
|
||||||
|
|
||||||
wndx = i;
|
wndx = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Use the process ID of the IDLE thread (or thread 0 is the are all
|
/* Use the process ID of the IDLE worker thread (or the ID of worker
|
||||||
* busy)
|
* thread 0 if all of the worker threads are busy).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pid = g_lpwork.worker[wndx].pid;
|
pid = g_lpwork.worker[wndx].pid;
|
||||||
|
|||||||
Reference in New Issue
Block a user