xref: /kvm-unit-tests/lib/alloc.c (revision 882825e6b9c4af7961ee48b293beb75111e86d54)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 #include <alloc.h>
3 #include <bitops.h>
4 #include <asm/page.h>
5 #include <linux/compiler.h>
6 
malloc(size_t size)7 void *malloc(size_t size)
8 {
9 	return memalign(sizeof(long), size);
10 }
11 
calloc(size_t nmemb,size_t size)12 void *calloc(size_t nmemb, size_t size)
13 {
14 	void *ptr;
15 
16 	assert(!check_mul_overflow(nmemb, size));
17 	ptr = malloc(nmemb * size);
18 	if (ptr)
19 		memset(ptr, 0, nmemb * size);
20 	return ptr;
21 }
22 
free(void * ptr)23 void free(void *ptr)
24 {
25 	if (alloc_ops->free)
26 		alloc_ops->free(ptr);
27 }
28 
memalign(size_t alignment,size_t size)29 void *memalign(size_t alignment, size_t size)
30 {
31 	void *p;
32 
33 	if (!size)
34 		return NULL;
35 
36 	assert(is_power_of_2(alignment));
37 	assert(alloc_ops && alloc_ops->memalign);
38 
39 	p = alloc_ops->memalign(alignment, size);
40 	assert(p);
41 
42 	return (void *)p;
43 }
44