/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _DELAYED_CALL_H #define _DELAYED_CALL_H /* * Poor man's closures; I wish we could've done them sanely polymorphic, * but... */ struct delayed_call { … }; #define DEFINE_DELAYED_CALL(name) … /* I really wish we had closures with sane typechecking... */ static inline void set_delayed_call(struct delayed_call *call, void (*fn)(void *), void *arg) { … } static inline void do_delayed_call(struct delayed_call *call) { … } static inline void clear_delayed_call(struct delayed_call *call) { … } #endif