Skip to content
Snippets Groups Projects
Select Git revision
  • ab727af49fd068cd97c3bf5ce4f6e55f23f9b34f
  • master default protected
  • 9.0
  • 8.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.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
  • v8.0.1978
  • v8.0.1976
  • v8.0.1974
  • v8.0.1972
  • v8.0.1970
  • v8.0.1968
  • v8.0.1966
41 results

block_alloc_h.h

Blame
    • Martin Stjernholm's avatar
      f757d023
      Use a better type for counting bytes. · f757d023
      Martin Stjernholm authored
      Rev: src/array.c:1.204
      Rev: src/array.h:1.73
      Rev: src/block_alloc.h:1.85
      Rev: src/block_alloc_h.h:1.25
      Rev: src/builtin_functions.c:1.658
      Rev: src/multiset.h:1.42
      Rev: src/object.c:1.287
      Rev: src/program.h:1.241
      Rev: src/stralloc.c:1.214
      Rev: src/stralloc.h:1.101
      f757d023
      History
      Use a better type for counting bytes.
      Martin Stjernholm authored
      Rev: src/array.c:1.204
      Rev: src/array.h:1.73
      Rev: src/block_alloc.h:1.85
      Rev: src/block_alloc_h.h:1.25
      Rev: src/builtin_functions.c:1.658
      Rev: src/multiset.h:1.42
      Rev: src/object.c:1.287
      Rev: src/program.h:1.241
      Rev: src/stralloc.c:1.214
      Rev: src/stralloc.h:1.101
    block_alloc_h.h 2.50 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.
    || $Id: block_alloc_h.h,v 1.25 2008/05/01 21:44:32 mast Exp $
    */
    
    #undef BLOCK_ALLOC
    #undef PTR_HASH_ALLOC
    #undef PTR_HASH_ALLOC_FIXED
    #undef BLOCK_ALLOC_FILL_PAGES
    #undef PTR_HASH_ALLOC_FILL_PAGES
    #undef PTR_HASH_ALLOC_FIXED_FILL_PAGES
    
    #ifndef PIKE_HASH_T
    #define PIKE_HASH_T	size_t
    #endif /* !PIKE_HASH_T */
    
    #ifdef BLOCK_ALLOC_USED
    #error "block_alloc.h must be included after all uses of block_alloc_h.h"
    #endif /* BLOCK_ALLOC_USED */
    
    #define BLOCK_ALLOC(DATA,SIZE)						\
    struct DATA *PIKE_CONCAT(alloc_,DATA)(void);				\
    void PIKE_CONCAT3(new_,DATA,_context)(void);				\
    void PIKE_CONCAT3(really_free_,DATA,_unlocked)(struct DATA *d);		\
    void PIKE_CONCAT(really_free_,DATA)(struct DATA *d);			\
    void PIKE_CONCAT3(free_all_,DATA,_blocks)(void);			\
    void PIKE_CONCAT3(count_memory_in_,DATA,s)(size_t *num, size_t *size);	\
    void PIKE_CONCAT3(init_,DATA,_blocks)(void)
    
    
    #define PTR_HASH_ALLOC(DATA,BSIZE)				\
    BLOCK_ALLOC(DATA,BSIZE);					\
    extern struct DATA **PIKE_CONCAT(DATA,_hash_table);		\
    extern size_t PIKE_CONCAT(DATA,_hash_table_size);		\
    struct DATA *PIKE_CONCAT(find_,DATA)(void *ptr);		\
    struct DATA *PIKE_CONCAT3(make_,DATA,_unlocked)			\
    		(void *ptr, PIKE_HASH_T hval);			\
    struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr);		\
    struct DATA *PIKE_CONCAT(get_,DATA)(void *ptr);			\
    int PIKE_CONCAT3(check_,DATA,_semaphore)(void *ptr);		\
    void PIKE_CONCAT(move_,DATA)(struct DATA *block, void *new_ptr); \
    int PIKE_CONCAT(remove_,DATA)(void *ptr);			\
    void PIKE_CONCAT3(low_init_,DATA,_hash)(size_t);		\
    void PIKE_CONCAT3(init_,DATA,_hash)(void);			\
    void PIKE_CONCAT3(exit_,DATA,_hash)(void)
    
    #define PTR_HASH_ALLOC_FIXED(DATA,BSIZE)			\
    PTR_HASH_ALLOC(DATA,BSIZE)
    
    #define BLOCK_ALLOC_FILL_PAGES(DATA,PAGES) BLOCK_ALLOC(DATA, n/a)
    #define PTR_HASH_ALLOC_FILL_PAGES(DATA,PAGES) PTR_HASH_ALLOC(DATA, n/a)
    #define PTR_HASH_ALLOC_FIXED_FILL_PAGES(DATA,PAGES) PTR_HASH_ALLOC_FIXED(DATA, n/a)
    
    #define PTR_HASH_LOOP(DATA,HVAL,PTR)					\
      for ((HVAL) = (PIKE_HASH_T)PIKE_CONCAT(DATA,_hash_table_size); (HVAL)-- > 0;)	\
        for ((PTR) = PIKE_CONCAT(DATA,_hash_table)[HVAL];			\
    	 (PTR); (PTR) = (PTR)->BLOCK_ALLOC_NEXT)
    
    /* The name of a member in the BLOCK_ALLOC struct big enough to
     * contain a void * (used for the free list). */
    #define BLOCK_ALLOC_NEXT next
    
    /* The name of a void * member in the PTR_HASH_ALLOC struct containing
     * the key. */
    #define PTR_HASH_ALLOC_DATA data