Add pvalloc()

This commit is contained in:
Peter Limkilde Svendsen
2025-02-11 21:13:05 +01:00
parent 7edc231f31
commit b3f36faf87
7 changed files with 99 additions and 3 deletions
+39 -1
View File
@@ -1,4 +1,4 @@
#include <malloc.h>
#include <malloc.h> /* for pvalloc() */
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@@ -299,5 +299,43 @@ int main(void) {
test_cannot_alloc(ptr_posix_memalign_maxsize, posix_memalign_maxsize_return);
free(ptr_posix_memalign_maxsize);
errno = 0;
char * ptr_pvalloc_size0 = (char *)pvalloc(zero_size);
int pvalloc_size0_errno = errno;
printf("pvalloc (size 0): ");
test_size_zero(ptr_pvalloc_size0, page_size, pvalloc_size0_errno);
free(ptr_pvalloc_size0);
errno = 0;
char * ptr_pvalloc = (char *)pvalloc(sample_alloc_size);
int pvalloc_errno = errno;
printf("pvalloc: ");
test_valid_aligned(ptr_pvalloc, page_size, pvalloc_errno);
/* Check that the alloc size is rounded up to nearest page-size
* multiple */
for(i = 0; i < page_size; i++) {
ptr_pvalloc[i] = (char)i;
}
free(ptr_pvalloc);
errno = 0;
char * ptr_pvalloc_multipage = (char *)pvalloc(page_size + 1);
int pvalloc_multipage_errno = errno;
printf("pvalloc (2 pages): ");
test_valid_aligned(ptr_pvalloc_multipage, page_size, pvalloc_multipage_errno);
/* Check that the alloc size is rounded up to nearest page-size
* multiple */
for(i = 0; i < 2*page_size; i++) {
ptr_pvalloc_multipage[i] = (char)i;
}
free(ptr_pvalloc_multipage);
errno = 0;
char * ptr_pvalloc_maxsize = (char *)pvalloc(max_size);
int pvalloc_maxsize_errno = errno;
printf("pvalloc (SIZE_MAX): ");
test_cannot_alloc(ptr_pvalloc_maxsize, pvalloc_maxsize_errno);
free(ptr_pvalloc_maxsize);
#pragma GCC diagnostic pop
}