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

workqueues.h (2007B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef WORKQUEUES_H
      3#define WORKQUEUES_H
      4
      5#include <stdbool.h>
      6
      7#include "barriers.h"
      8#include "bug_on.h"
      9#include "int_typedefs.h"
     10
     11#include <linux/types.h>
     12
     13/* Stub workqueue implementation. */
     14
     15struct work_struct;
     16typedef void (*work_func_t)(struct work_struct *work);
     17void delayed_work_timer_fn(unsigned long __data);
     18
     19struct work_struct {
     20/*	atomic_long_t data; */
     21	unsigned long data;
     22
     23	struct list_head entry;
     24	work_func_t func;
     25#ifdef CONFIG_LOCKDEP
     26	struct lockdep_map lockdep_map;
     27#endif
     28};
     29
     30struct timer_list {
     31	struct hlist_node	entry;
     32	unsigned long		expires;
     33	void			(*function)(unsigned long);
     34	unsigned long		data;
     35	u32			flags;
     36	int			slack;
     37};
     38
     39struct delayed_work {
     40	struct work_struct work;
     41	struct timer_list timer;
     42
     43	/* target workqueue and CPU ->timer uses to queue ->work */
     44	struct workqueue_struct *wq;
     45	int cpu;
     46};
     47
     48
     49static inline bool schedule_work(struct work_struct *work)
     50{
     51	BUG();
     52	return true;
     53}
     54
     55static inline bool schedule_work_on(int cpu, struct work_struct *work)
     56{
     57	BUG();
     58	return true;
     59}
     60
     61static inline bool queue_work(struct workqueue_struct *wq,
     62			      struct work_struct *work)
     63{
     64	BUG();
     65	return true;
     66}
     67
     68static inline bool queue_delayed_work(struct workqueue_struct *wq,
     69				      struct delayed_work *dwork,
     70				      unsigned long delay)
     71{
     72	BUG();
     73	return true;
     74}
     75
     76#define INIT_WORK(w, f) \
     77	do { \
     78		(w)->data = 0; \
     79		(w)->func = (f); \
     80	} while (0)
     81
     82#define INIT_DELAYED_WORK(w, f) INIT_WORK(&(w)->work, (f))
     83
     84#define __WORK_INITIALIZER(n, f) { \
     85		.data = 0, \
     86		.entry = { &(n).entry, &(n).entry }, \
     87		.func = f \
     88	}
     89
     90/* Don't bother initializing timer. */
     91#define __DELAYED_WORK_INITIALIZER(n, f, tflags) { \
     92	.work = __WORK_INITIALIZER((n).work, (f)), \
     93	}
     94
     95#define DECLARE_WORK(n, f) \
     96	struct workqueue_struct n = __WORK_INITIALIZER
     97
     98#define DECLARE_DELAYED_WORK(n, f) \
     99	struct delayed_work n = __DELAYED_WORK_INITIALIZER(n, f, 0)
    100
    101#define system_power_efficient_wq ((struct workqueue_struct *) NULL)
    102
    103#endif