LCOV - code coverage report
Current view: top level - include/linux - delayed_call.h (source / functions) Hit Total Coverage
Test: fstests of 6.5.0-rc4-xfsa @ Mon Jul 31 20:08:27 PDT 2023 Lines: 6 7 85.7 %
Date: 2023-07-31 20:08:27 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             : static inline void set_delayed_call(struct delayed_call *call,
      19             :                 void (*fn)(void *), void *arg)
      20             : {
      21   256285620 :         call->fn = fn;
      22   256285620 :         call->arg = arg;
      23           0 : }
      24             : 
      25             : static inline void do_delayed_call(struct delayed_call *call)
      26             : {
      27   406861163 :         if (call->fn)
      28   404240776 :                 call->fn(call->arg);
      29             : }
      30             : 
      31             : static inline void clear_delayed_call(struct delayed_call *call)
      32             : {
      33   148741063 :         call->fn = NULL;
      34      491483 : }
      35             : #endif

Generated by: LCOV version 1.14