zhangyuan21
63039b80e1
sched/wqueue: do work_cancel when worker is not null
...
Signed-off-by: zhangyuan21 <zhangyuan21@xiaomi.com>
2023-01-16 13:37:00 +08:00
Xiang Xiao
40ef5bc6db
libc: Move queue.h from include to include/nuttx
...
to avoid the conflict with libuv's queue.h
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-09-26 08:04:58 +02:00
ligd
bc17563a8f
wqueue: fix race-condition on work_queue
...
CPU0 CPU1
work_queue(a) work_queue(a)
-> work_cancel(a)
-> work_cancel(a)
-> enter_critical()
-> sq_addlast(a)
-> leave_critical()
-> enter_critical()
-> sq_addlast(a) // double add, wrong
-> leave_critical()
Also, this happens in mulit-threads in one CPU.
Fix:
work_cancel() should in critical section.
Signed-off-by: ligd <liguiding1@xiaomi.com>
2022-09-09 21:52:21 +02:00
ligd
4a87578bdb
wqueue: change single queue to double queue to improve speed
...
Signed-off-by: ligd <liguiding1@xiaomi.com>
2022-09-08 15:03:54 +02:00
ligd
e5420c8eee
wqueue: fix NO leave_critical_section() when only CONFIG_SCHED_HPWORK
...
Signed-off-by: ligd <liguiding1@xiaomi.com>
2021-12-23 02:27:34 -06:00
Jiuzhu Dong
855c78bb9d
work_queue: schedule the work queue using the timer mechanism
...
Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
2021-07-27 21:01:38 -07:00
Nathan Hartman
af1fd49fb0
wqueue: Fix typos
...
include/nuttx/wqueue.h:
libs/libc/wqueue/work_cancel.c:
libs/libc/wqueue/work_queue.c:
sched/wqueue/kwork_cancel.c:
sched/wqueue/kwork_queue.c:
* Fix spelling, grammar, and typos.
* Improve wording in a few areas.
* These changes affect comments only. No functional changes.
2021-07-16 19:54:08 -03:00
Xiang Xiao
517974787f
Rename clock_systime[r|spec] to clock_systime_[ticks|timespec]
...
follow up the new naming convention:
https://cwiki.apache.org/confluence/display/NUTTX/Naming+of+OS+Internal+Functions
2020-05-10 14:35:50 -06:00
Nathan Hartman
a5e643b0cd
Fix typos in comments and documentation.
2020-03-16 20:01:11 -06:00
Gregory Nutt
45b8e3ce7f
sched/wqueue: Update to Apache 2.0 headers.
...
Also run files through nxstyle to assurand coding standard compliance.
2020-03-11 18:39:53 -03:00
Gregory Nutt
8fdbb1e0a4
Elimate use of the non-standard type systime_t and replace it the equivalent, standard type clock_t
...
Squashed commit of the following:
sched: Rename all use of system_t to clock_t.
syscall: Rename all use of system_t to clock_t.
net: Rename all use of system_t to clock_t.
libs: Rename all use of system_t to clock_t.
fs: Rename all use of system_t to clock_t.
drivers: Rename all use of system_t to clock_t.
arch: Rename all use of system_t to clock_t.
include: Remove definition of systime_t; rename all use of system_t to clock_t.
2018-06-16 12:16:13 -06:00
Gregory Nutt
7cf88d7dbd
Make sure that labeling is used consistently in all function headers.
2018-02-01 10:00:02 -06:00
Gregory Nutt
4993b0cb66
Work queue: In a recent change for a problem noted by Pascal Speck, it was noted (again by Pascal Speck) that the cancellation of existing work and replacement with new work must be atomic. Thanks, Pascal.
2017-08-31 07:43:47 -06:00
Gregory Nutt
92f44c5607
Networking: Move net/inet/net_monitor.c to net/tcp/tcp_monitor.c in preparation for design change to fix monitoring of duplicated sockets.
2017-08-29 08:40:13 -06:00
Gregory Nutt
bbf4d5048a
work_queue() must cancel existing work prior to queuing new work, otherwise the work queue can become corrupted. Problem noted by Pascal Speck.
2017-08-28 07:46:48 -06:00
Heesub Shin
8e94d8e7cc
Signal sent from work_signal() may interrupt the low priority worker thread that is already running. For example, the worker thread that is waiting for a semaphore could be woken up by the signal and break any synchronization assumption as a result. It also does not make any sense to send signal if it is already running and busy. This commit fixes it.
2016-11-06 08:00:12 -06:00
Gregory Nutt
6e3107650d
nuttx/sched: Replace irqsave() with enter_critical_section(); replace irqrestore() with leave_critical_section()
2016-02-14 08:17:46 -06:00
=?UTF-8?Q?Manuel_St=c3=bchn?=
2bacc40350
Fix mismatched prototype error in work_queue()
2016-01-24 12:48:24 -06:00
Gregory Nutt
cb9e27c3b0
Standardize naming used for public data and function groupings
2015-10-02 16:30:35 -06:00
Gregory Nutt
4cd57e1e4e
Work queues: Logic that sets the queued indication and the logic that does the actual queuing must be atomic
2015-09-30 11:04:29 -06:00
Gregory Nutt
4a4b3ac537
Add support for multiple low-priority worker threads
2014-10-10 16:24:50 -06:00
Gregory Nutt
cf59a195ba
User-mode work queue logic should not disable interrupts
2014-10-10 14:52:04 -06:00
Gregory Nutt
2015fd76e2
Fix some conditional logic in last work queue repartitioning change
2014-10-10 08:47:41 -06:00
Gregory Nutt
1afc9773ac
Decoupling work queue data structures. This is part of the preparation to support multiple low-priority worker threads
2014-10-10 08:35:58 -06:00