cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

task_work.h (979B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _LINUX_TASK_WORK_H
      3#define _LINUX_TASK_WORK_H
      4
      5#include <linux/list.h>
      6#include <linux/sched.h>
      7
      8typedef void (*task_work_func_t)(struct callback_head *);
      9
     10static inline void
     11init_task_work(struct callback_head *twork, task_work_func_t func)
     12{
     13	twork->func = func;
     14}
     15
     16enum task_work_notify_mode {
     17	TWA_NONE,
     18	TWA_RESUME,
     19	TWA_SIGNAL,
     20	TWA_SIGNAL_NO_IPI,
     21};
     22
     23static inline bool task_work_pending(struct task_struct *task)
     24{
     25	return READ_ONCE(task->task_works);
     26}
     27
     28int task_work_add(struct task_struct *task, struct callback_head *twork,
     29			enum task_work_notify_mode mode);
     30
     31struct callback_head *task_work_cancel_match(struct task_struct *task,
     32	bool (*match)(struct callback_head *, void *data), void *data);
     33struct callback_head *task_work_cancel(struct task_struct *, task_work_func_t);
     34void task_work_run(void);
     35
     36static inline void exit_task_work(struct task_struct *task)
     37{
     38	task_work_run();
     39}
     40
     41#endif	/* _LINUX_TASK_WORK_H */