summaryrefslogtreecommitdiff
path: root/include/linux/task_work.h
blob: cf5e7e891a776289105ad72237408a7613b13240 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TASK_WORK_H
#define _LINUX_TASK_WORK_H

#include <linux/list.h>
#include <linux/sched.h>

typedef void (*task_work_func_t)(struct callback_head *);

static inline void
init_task_work(struct callback_head *twork, task_work_func_t func)
{
	twork->func = func;
}

enum task_work_notify_mode {
	TWA_NONE,
	TWA_RESUME,
	TWA_SIGNAL,
	TWA_SIGNAL_NO_IPI,
	TWA_NMI_CURRENT,
};

static inline bool task_work_pending(struct task_struct *task)
{
	return READ_ONCE(task->task_works);
}

int task_work_add(struct task_struct *task, struct callback_head *twork,
			enum task_work_notify_mode mode);

struct callback_head *task_work_cancel_match(struct task_struct *task,
	bool (*match)(struct callback_head *, void *data), void *data);
struct callback_head *task_work_cancel_func(struct task_struct *, task_work_func_t);
bool task_work_cancel(struct task_struct *task, struct callback_head *cb);
void task_work_run(void);

static inline void exit_task_work(struct task_struct *task)
{
	task_work_run();
}

#endif	/* _LINUX_TASK_WORK_H */
/drm_gem.h?id=1a9458aeb8eb48bfa5f9b3e7682bddc28fd0b85e'>drm: remove drm_driver::gem_free_objectEmil Velikov 2019-12-06drm: call drm_gem_object_funcs.mmap with fake offsetGerd Hoffmann 2019-10-29drm/gem: Fix mmap fake offset handling for drm_gem_object_funcs.mmapRob Herring 2019-10-17drm: add mmap() to drm_gem_object_funcsGerd Hoffmann 2019-08-13dma-buf: rename reservation_object to dma_resvChristian König 2019-08-07Revert "drm/gem: Rename drm_gem_dumb_map_offset() to drm_gem_map_offset()"Rob Herring 2019-08-07Revert "Revert "drm/gem: Rename drm_gem_dumb_map_offset() to drm_gem_map_offs...Sean Paul 2019-07-03Revert "drm/gem: Rename drm_gem_dumb_map_offset() to drm_gem_map_offset()"Rob Herring 2019-06-28drm/gem: Rename drm_gem_dumb_map_offset() to drm_gem_map_offset()Steven Price 2019-06-21drm/prime: Update docsDaniel Vetter 2019-06-17drm/gem: Unexport drm_gem_(un)pin/v(un)mapDaniel Vetter 2019-04-16drm: Add helpers for setting up an array of dma_fence dependencies.Eric Anholt 2019-04-12drm: Add a drm_gem_objects_lookup helperRob Herring 2019-03-14drm: Add helpers for locking an array of BO reservations.Eric Anholt 2019-02-19drm: Add reservation_object to drm_gem_objectRob Herring 2018-11-24drm: remove deprecated "[__]drm_gem_object_[un]reference[_locked]" functionsFernando Ramos 2018-11-20drm/gem: Add drm_gem_object_funcsNoralf Trønnes 2018-02-16drm: move read_domains and write_domain into i915Christian König 2017-07-29drm/gem: Add drm_gem_dumb_map_offset()Noralf Trønnes 2017-07-05drm: Remove pending_read_domains and pending_write_domainChris Wilson