diff options
| author | Ingo Molnar <mingo@kernel.org> | 2020-04-25 10:25:02 +0200 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2020-04-25 10:25:02 +0200 |
| commit | 4353dd3b70783ebbc83fcf12d9c0af3fbab0223b (patch) | |
| tree | aa84823fc1d4edfb4a9bbbe8bb6c2c9ea07939aa /include/linux/workqueue.h | |
| parent | 594e576d4b93b8cda3247542366b47e1b2ddc4dc (diff) | |
| parent | 4eb8320bd1aaa7e69d039f2c251735e3ef0b9a38 (diff) | |
| download | lwn-4353dd3b70783ebbc83fcf12d9c0af3fbab0223b.tar.gz lwn-4353dd3b70783ebbc83fcf12d9c0af3fbab0223b.zip | |
Merge tag 'efi-next' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi into efi/core
Pull EFI changes for v5.8 from Ard Biesheuvel:
"- preliminary changes for RISC-V
- add support for setting the resolution on the EFI framebuffer
- simplify kernel image loading for arm64
- Move .bss into .data via the linker script instead of relying on symbol
annotations.
- Get rid of __pure getters to access global variables
- Clean up the config table matching arrays"
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/linux/workqueue.h')
| -rw-r--r-- | include/linux/workqueue.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 4261d1c6e87b..8b505d22fc0e 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h @@ -487,6 +487,19 @@ extern void wq_worker_comm(char *buf, size_t size, struct task_struct *task); * * We queue the work to the CPU on which it was submitted, but if the CPU dies * it can be processed by another CPU. + * + * Memory-ordering properties: If it returns %true, guarantees that all stores + * preceding the call to queue_work() in the program order will be visible from + * the CPU which will execute @work by the time such work executes, e.g., + * + * { x is initially 0 } + * + * CPU0 CPU1 + * + * WRITE_ONCE(x, 1); [ @work is being executed ] + * r0 = queue_work(wq, work); r1 = READ_ONCE(x); + * + * Forbids: r0 == true && r1 == 0 */ static inline bool queue_work(struct workqueue_struct *wq, struct work_struct *work) @@ -546,6 +559,9 @@ static inline bool schedule_work_on(int cpu, struct work_struct *work) * This puts a job in the kernel-global workqueue if it was not already * queued and leaves it in the same position on the kernel-global * workqueue otherwise. + * + * Shares the same memory-ordering properties of queue_work(), cf. the + * DocBook header of queue_work(). */ static inline bool schedule_work(struct work_struct *work) { @@ -649,7 +665,7 @@ int workqueue_online_cpu(unsigned int cpu); int workqueue_offline_cpu(unsigned int cpu); #endif -int __init workqueue_init_early(void); -int __init workqueue_init(void); +void __init workqueue_init_early(void); +void __init workqueue_init(void); #endif |
