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