cosmopolitan/third_party/dlmalloc/malloc_set_footprint_limit.c
Justine Tunney ea0b5d9d1c Get Cosmopolitan into releasable state
A new rollup tool now exists for flattening out the headers in a way
that works better for our purposes than cpp. A lot of the API clutter
has been removed. APIs that aren't a sure thing in terms of general
recommendation are now marked internal.

There's now a smoke test for the amalgamation archive and gigantic
header file. So we can now guarantee you can use this project on the
easiest difficulty setting without the gigantic repository.

A website is being created, which is currently a work in progress:
https://justine.storage.googleapis.com/cosmopolitan/index.html
2020-11-25 08:19:00 -08:00

25 lines
1 KiB
C

#include "libc/limits.h"
#include "libc/mem/mem.h"
#include "third_party/dlmalloc/dlmalloc.internal.h"
/**
* Sets the maximum number of bytes to obtain from the system, causing
* failure returns from malloc and related functions upon attempts to
* exceed this value. The argument value may be subject to page rounding
* to an enforceable limit; this actual value is returned. Using an
* argument of the maximum possible size_t effectively disables checks.
* If the argument is less than or equal to the current
* malloc_footprint, then all future allocations that require additional
* system memory will fail. However, invocation cannot retroactively
* deallocate existing used memory.
*/
size_t malloc_set_footprint_limit(size_t bytes) {
size_t result; /* invert sense of 0 */
if (bytes == 0) result = granularity_align(1); /* Use minimal size */
if (bytes == SIZE_MAX) {
result = 0; /* disable */
} else {
result = granularity_align(bytes);
}
return g_dlmalloc->footprint_limit = result;
}