LCOV - code coverage report
Current view: top level - include/linux - delayed_call.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 9 9 100.0 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       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             : 
      10             : struct 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... */
      18        1764 : static inline void set_delayed_call(struct delayed_call *call,
      19             :                 void (*fn)(void *), void *arg)
      20             : {
      21        1764 :         call->fn = fn;
      22        1764 :         call->arg = arg;
      23             : }
      24             : 
      25        9276 : static inline void do_delayed_call(struct delayed_call *call)
      26             : {
      27        9276 :         if (call->fn)
      28        1764 :                 call->fn(call->arg);
      29             : }
      30             : 
      31        8177 : static inline void clear_delayed_call(struct delayed_call *call)
      32             : {
      33        8159 :         call->fn = NULL;
      34          18 : }
      35             : #endif

Generated by: LCOV version 1.14