This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
make the bison-based parser threadsafe and capable of deep
[perl5.git] / malloc_ctl.h
1 #ifndef MALLOC_CTL_H
2 #  define MALLOC_CTL_H
3
4 struct perl_mstats {
5     UV *nfree;
6     UV *ntotal;
7     IV topbucket, topbucket_ev, topbucket_odd, totfree, total, total_chain;
8     IV total_sbrk, sbrks, sbrk_good, sbrk_slack, start_slack, sbrked_remains;
9     IV minbucket;
10     /* Level 1 info */
11     UV *bucket_mem_size;
12     UV *bucket_available_size;
13     UV nbuckets;
14 };
15 typedef struct perl_mstats perl_mstats_t;
16
17 START_EXTERN_C
18 Malloc_t Perl_malloc (MEM_SIZE nbytes);
19 Malloc_t Perl_calloc (MEM_SIZE elements, MEM_SIZE size);
20 Malloc_t Perl_realloc (Malloc_t where, MEM_SIZE nbytes);
21 /* 'mfree' rather than 'free', since there is already a 'perl_free'
22  * that causes clashes with case-insensitive linkers */
23 Free_t   Perl_mfree (Malloc_t where);
24 END_EXTERN_C
25
26 #ifndef NO_MALLOC_DYNAMIC_CFG
27
28 /* IV configuration data */
29 enum {
30   MallocCfg_FIRST_SBRK,
31   MallocCfg_MIN_SBRK,
32   MallocCfg_MIN_SBRK_FRAC1000,
33   MallocCfg_SBRK_ALLOW_FAILURES,
34   MallocCfg_SBRK_FAILURE_PRICE,
35   MallocCfg_sbrk_goodness,
36
37   MallocCfg_filldead,
38   MallocCfg_fillalive,
39   MallocCfg_fillcheck,
40
41   MallocCfg_skip_cfg_env,
42   MallocCfg_cfg_env_read,
43
44   MallocCfg_emergency_buffer_size,
45   MallocCfg_emergency_buffer_last_req,
46
47   MallocCfg_emergency_buffer_prepared_size,
48
49   MallocCfg_last
50 };
51 /* char* configuration data */
52 enum {
53   MallocCfgP_emergency_buffer,
54   MallocCfgP_emergency_buffer_prepared,
55   MallocCfgP_last
56 };
57 START_EXTERN_C
58 extern IV *MallocCfg_ptr;
59 extern char **MallocCfgP_ptr;
60 END_EXTERN_C
61
62 #endif
63
64 #endif