Home | History | Annotate | Download | only in internal
      1 /******************************************************************************/
      2 #ifdef JEMALLOC_H_TYPES
      3 
      4 typedef struct ctl_node_s ctl_node_t;
      5 typedef struct ctl_named_node_s ctl_named_node_t;
      6 typedef struct ctl_indexed_node_s ctl_indexed_node_t;
      7 typedef struct ctl_arena_stats_s ctl_arena_stats_t;
      8 typedef struct ctl_stats_s ctl_stats_t;
      9 
     10 #endif /* JEMALLOC_H_TYPES */
     11 /******************************************************************************/
     12 #ifdef JEMALLOC_H_STRUCTS
     13 
     14 struct ctl_node_s {
     15 	bool			named;
     16 };
     17 
     18 struct ctl_named_node_s {
     19 	struct ctl_node_s	node;
     20 	const char		*name;
     21 	/* If (nchildren == 0), this is a terminal node. */
     22 	unsigned		nchildren;
     23 	const			ctl_node_t *children;
     24 	int			(*ctl)(tsd_t *, const size_t *, size_t, void *,
     25 	    size_t *, void *, size_t);
     26 };
     27 
     28 struct ctl_indexed_node_s {
     29 	struct ctl_node_s	node;
     30 	const ctl_named_node_t	*(*index)(tsdn_t *, const size_t *, size_t,
     31 	    size_t);
     32 };
     33 
     34 struct ctl_arena_stats_s {
     35 	bool			initialized;
     36 	unsigned		nthreads;
     37 	const char		*dss;
     38 	ssize_t			lg_dirty_mult;
     39 	ssize_t			decay_time;
     40 	size_t			pactive;
     41 	size_t			pdirty;
     42 
     43 	/* The remainder are only populated if config_stats is true. */
     44 
     45 	arena_stats_t		astats;
     46 
     47 	/* Aggregate stats for small size classes, based on bin stats. */
     48 	size_t			allocated_small;
     49 	uint64_t		nmalloc_small;
     50 	uint64_t		ndalloc_small;
     51 	uint64_t		nrequests_small;
     52 
     53 	malloc_bin_stats_t	bstats[NBINS];
     54 	malloc_large_stats_t	*lstats;	/* nlclasses elements. */
     55 	malloc_huge_stats_t	*hstats;	/* nhclasses elements. */
     56 };
     57 
     58 struct ctl_stats_s {
     59 	size_t			allocated;
     60 	size_t			active;
     61 	size_t			metadata;
     62 	size_t			resident;
     63 	size_t			mapped;
     64 	size_t			retained;
     65 	unsigned		narenas;
     66 	ctl_arena_stats_t	*arenas;	/* (narenas + 1) elements. */
     67 };
     68 
     69 #endif /* JEMALLOC_H_STRUCTS */
     70 /******************************************************************************/
     71 #ifdef JEMALLOC_H_EXTERNS
     72 
     73 int	ctl_byname(tsd_t *tsd, const char *name, void *oldp, size_t *oldlenp,
     74     void *newp, size_t newlen);
     75 int	ctl_nametomib(tsdn_t *tsdn, const char *name, size_t *mibp,
     76     size_t *miblenp);
     77 
     78 int	ctl_bymib(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp,
     79     size_t *oldlenp, void *newp, size_t newlen);
     80 bool	ctl_boot(void);
     81 void	ctl_prefork(tsdn_t *tsdn);
     82 void	ctl_postfork_parent(tsdn_t *tsdn);
     83 void	ctl_postfork_child(tsdn_t *tsdn);
     84 
     85 #define	xmallctl(name, oldp, oldlenp, newp, newlen) do {		\
     86 	if (je_mallctl(name, oldp, oldlenp, newp, newlen)		\
     87 	    != 0) {							\
     88 		malloc_printf(						\
     89 		    "<jemalloc>: Failure in xmallctl(\"%s\", ...)\n",	\
     90 		    name);						\
     91 		abort();						\
     92 	}								\
     93 } while (0)
     94 
     95 #define	xmallctlnametomib(name, mibp, miblenp) do {			\
     96 	if (je_mallctlnametomib(name, mibp, miblenp) != 0) {		\
     97 		malloc_printf("<jemalloc>: Failure in "			\
     98 		    "xmallctlnametomib(\"%s\", ...)\n", name);		\
     99 		abort();						\
    100 	}								\
    101 } while (0)
    102 
    103 #define	xmallctlbymib(mib, miblen, oldp, oldlenp, newp, newlen) do {	\
    104 	if (je_mallctlbymib(mib, miblen, oldp, oldlenp, newp,		\
    105 	    newlen) != 0) {						\
    106 		malloc_write(						\
    107 		    "<jemalloc>: Failure in xmallctlbymib()\n");	\
    108 		abort();						\
    109 	}								\
    110 } while (0)
    111 
    112 #endif /* JEMALLOC_H_EXTERNS */
    113 /******************************************************************************/
    114 #ifdef JEMALLOC_H_INLINES
    115 
    116 #endif /* JEMALLOC_H_INLINES */
    117 /******************************************************************************/
    118 
    119