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

delayed_call.h (709B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _DELAYED_CALL_H
      3#define _DELAYED_CALL_H
      4
      5/*
      6 * Poor man's closures; I wish we could've done them sanely polymorphic,
      7 * but...
      8 */
      9
     10struct delayed_call {
     11	void (*fn)(void *);
     12	void *arg;
     13};
     14
     15#define DEFINE_DELAYED_CALL(name) struct delayed_call name = {NULL, NULL}
     16
     17/* I really wish we had closures with sane typechecking... */
     18static inline void set_delayed_call(struct delayed_call *call,
     19		void (*fn)(void *), void *arg)
     20{
     21	call->fn = fn;
     22	call->arg = arg;
     23}
     24
     25static inline void do_delayed_call(struct delayed_call *call)
     26{
     27	if (call->fn)
     28		call->fn(call->arg);
     29}
     30
     31static inline void clear_delayed_call(struct delayed_call *call)
     32{
     33	call->fn = NULL;
     34}
     35#endif