Skip to content
Snippets Groups Projects
Select Git revision
  • 8dc1488edf7f6419aa5f1ae2b30189cef48e8cdd
  • master default protected
  • 8.0
  • 9.0
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • nt-tools
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • grubba/wip/sakura/8.0
  • v8.0.2016
  • v8.0.2014
  • v8.0.2012
  • v8.0.2008
  • v8.0.2006
  • v8.0.2004
  • v8.0.2002
  • v8.0.2000
  • v8.0.1998
  • v8.0.1996
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
  • v8.0.1982
  • v8.0.1980
41 results

__default.pmod

Blame
  • callback.h 1.31 KiB
    /*
    || This file is part of Pike. For copyright information see COPYRIGHT.
    || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
    || for more information.
    */
    
    #ifndef CALLBACK_H
    #define CALLBACK_H
    
    #include "array.h"
    
    struct callback;
    
    struct callback_list
    {
      struct callback *callbacks;
      int num_calls;
    };
    
    extern struct callback_list fork_child_callback;
    
    typedef void (*callback_func)(struct callback *, void *,void *);
    
    #include "block_alloc_h.h"
    /* Prototypes begin here */
    struct callback;
    BLOCK_ALLOC(callback, CALLBACK_CHUNK);
    PMOD_EXPORT void low_call_callback(struct callback_list *lst, void *arg);
    PMOD_EXPORT struct callback *debug_add_to_callback(struct callback_list *lst,
    						   callback_func call,
    						   void *arg,
    						   callback_func free_func);
    PMOD_EXPORT void *remove_callback(struct callback *l);
    void free_callback_list(struct callback_list *lst);
    void cleanup_callbacks(void);
    /* Prototypes end here */
    
    #define add_to_callback(LST,CALL,ARG,FF) \
      dmalloc_touch(struct callback *,debug_add_to_callback((LST),(CALL),(ARG),(FF)))
    
    #if 1
    #define call_callback(LST, ARG) do {			\
      struct callback_list *lst_=(LST);			\
      void *arg_=(ARG);					\
      if(lst_->callbacks) low_call_callback(lst_, arg_);	\
    }while(0)
    #else
    #define call_callback(LST, ARG) low_call_callback((LST), (ARG))
    #endif
    
    #endif