X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/01a605198da7bc5883a3dfa96b38f4f7c04f67f9..191737e1350a125739697af304730a0028ca01d5:/lunaix-os/kernel/mm/valloc.c?ds=sidebyside diff --git a/lunaix-os/kernel/mm/valloc.c b/lunaix-os/kernel/mm/valloc.c index 0c4d4d4..02384ef 100644 --- a/lunaix-os/kernel/mm/valloc.c +++ b/lunaix-os/kernel/mm/valloc.c @@ -1,4 +1,6 @@ +#include #include +#include #define MAX_CLASS 6 @@ -8,7 +10,7 @@ static char piles_names[MAX_CLASS][PILE_NAME_MAXLEN] = { }; static char piles_names_dma[MAX_CLASS][PILE_NAME_MAXLEN] = { - "valloc_dma_128", "valloc_dma_512", "valloc_dma_512", + "valloc_dma_128", "valloc_dma_256", "valloc_dma_512", "valloc_dma_1k", "valloc_dma_2k", "valloc_dma_4k" }; @@ -64,6 +66,27 @@ valloc(unsigned int size) return __valloc(size, &piles); } +void* +vzalloc(unsigned int size) +{ + void* ptr = __valloc(size, &piles); + memset(ptr, 0, size); + return ptr; +} + +void* +vcalloc(unsigned int size, unsigned int count) +{ + unsigned int alloc_size; + if (__builtin_umul_overflow(size, count, &alloc_size)) { + return 0; + } + + void* ptr = __valloc(alloc_size, &piles); + memset(ptr, 0, alloc_size); + return ptr; +} + void vfree(void* ptr) { @@ -76,6 +99,14 @@ valloc_dma(unsigned int size) return __valloc(size, &piles_dma); } +void* +vzalloc_dma(unsigned int size) +{ + void* ptr = __valloc(size, &piles_dma); + memset(ptr, 0, size); + return ptr; +} + void vfree_dma(void* ptr) {