xref: /freebsd/contrib/jemalloc/src/pai.c (revision c43cad87172039ccf38172129c79755ea79e6102)
1*c43cad87SWarner Losh #include "jemalloc/internal/jemalloc_preamble.h"
2*c43cad87SWarner Losh #include "jemalloc/internal/jemalloc_internal_includes.h"
3*c43cad87SWarner Losh 
4*c43cad87SWarner Losh size_t
5*c43cad87SWarner Losh pai_alloc_batch_default(tsdn_t *tsdn, pai_t *self, size_t size, size_t nallocs,
6*c43cad87SWarner Losh     edata_list_active_t *results, bool *deferred_work_generated) {
7*c43cad87SWarner Losh 	for (size_t i = 0; i < nallocs; i++) {
8*c43cad87SWarner Losh 		bool deferred_by_alloc = false;
9*c43cad87SWarner Losh 		edata_t *edata = pai_alloc(tsdn, self, size, PAGE,
10*c43cad87SWarner Losh 		    /* zero */ false, /* guarded */ false,
11*c43cad87SWarner Losh 		    /* frequent_reuse */ false, &deferred_by_alloc);
12*c43cad87SWarner Losh 		*deferred_work_generated |= deferred_by_alloc;
13*c43cad87SWarner Losh 		if (edata == NULL) {
14*c43cad87SWarner Losh 			return i;
15*c43cad87SWarner Losh 		}
16*c43cad87SWarner Losh 		edata_list_active_append(results, edata);
17*c43cad87SWarner Losh 	}
18*c43cad87SWarner Losh 	return nallocs;
19*c43cad87SWarner Losh }
20*c43cad87SWarner Losh 
21*c43cad87SWarner Losh void
22*c43cad87SWarner Losh pai_dalloc_batch_default(tsdn_t *tsdn, pai_t *self,
23*c43cad87SWarner Losh     edata_list_active_t *list, bool *deferred_work_generated) {
24*c43cad87SWarner Losh 	edata_t *edata;
25*c43cad87SWarner Losh 	while ((edata = edata_list_active_first(list)) != NULL) {
26*c43cad87SWarner Losh 		bool deferred_by_dalloc = false;
27*c43cad87SWarner Losh 		edata_list_active_remove(list, edata);
28*c43cad87SWarner Losh 		pai_dalloc(tsdn, self, edata, &deferred_by_dalloc);
29*c43cad87SWarner Losh 		*deferred_work_generated |= deferred_by_dalloc;
30*c43cad87SWarner Losh 	}
31*c43cad87SWarner Losh }
32