Date: Sat, 6 Mar 2021 10:41:00 GMT From: Hans Petter Selasky <hselasky@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: c743a6bd4fc0 - main - Implement mallocarray_domainset(9) variant of mallocarray(9). Message-ID: <202103061041.126Af0Eq003184@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by hselasky: URL: https://cgit.FreeBSD.org/src/commit/?id=c743a6bd4fc0d1be30f9bc9996333ac0ba079563 commit c743a6bd4fc0d1be30f9bc9996333ac0ba079563 Author: Hans Petter Selasky <hselasky@FreeBSD.org> AuthorDate: 2021-03-06 10:25:12 +0000 Commit: Hans Petter Selasky <hselasky@FreeBSD.org> CommitDate: 2021-03-06 10:38:55 +0000 Implement mallocarray_domainset(9) variant of mallocarray(9). Reviewed by: kib @ MFC after: 1 week Sponsored by: Mellanox Technologies // NVIDIA Networking --- share/man/man9/Makefile | 1 + share/man/man9/malloc.9 | 13 ++++++++++++- sys/kern/kern_malloc.c | 11 +++++++++++ sys/sys/malloc.h | 3 +++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 64e234c3d696..fb010231d710 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -1391,6 +1391,7 @@ MLINKS+=make_dev.9 destroy_dev.9 \ MLINKS+=malloc.9 free.9 \ malloc.9 malloc_domainset.9 \ malloc.9 mallocarray.9 \ + malloc.9 mallocarray_domainset.9 \ malloc.9 MALLOC_DECLARE.9 \ malloc.9 MALLOC_DEFINE.9 \ malloc.9 realloc.9 \ diff --git a/share/man/man9/malloc.9 b/share/man/man9/malloc.9 index 097688d7ea38..b8c6e504e0c0 100644 --- a/share/man/man9/malloc.9 +++ b/share/man/man9/malloc.9 @@ -29,7 +29,7 @@ .\" $NetBSD: malloc.9,v 1.3 1996/11/11 00:05:11 lukem Exp $ .\" $FreeBSD$ .\" -.Dd October 30, 2020 +.Dd March 6, 2021 .Dt MALLOC 9 .Os .Sh NAME @@ -70,6 +70,8 @@ .Fn malloc_domainset "size_t size" "struct malloc_type *type" "struct domainset *ds" "int flags" .Ft void * .Fn malloc_domainset_exec "size_t size" "struct malloc_type *type" "struct domainset *ds" "int flags" +.Ft void * +.Fn mallocarray_domainset "size_t nmemb" "size_t size" "struct malloc_type *type" "struct domainset *ds" "int flags" .Sh DESCRIPTION The .Fn malloc @@ -102,6 +104,15 @@ entries whose size is specified by .Fa size . .Pp The +.Fn mallocarray_domainset +variant allocates memory from a specific +.Xr numa 4 +domain using the specified domain selection policy. +See +.Xr domainset 9 +for some example policies. +.Pp +The .Fn free function releases memory at address .Fa addr diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c index eff9e62c9a10..48383358e3ad 100644 --- a/sys/kern/kern_malloc.c +++ b/sys/kern/kern_malloc.c @@ -804,6 +804,17 @@ mallocarray(size_t nmemb, size_t size, struct malloc_type *type, int flags) return (malloc(size * nmemb, type, flags)); } +void * +mallocarray_domainset(size_t nmemb, size_t size, struct malloc_type *type, + struct domainset *ds, int flags) +{ + + if (WOULD_OVERFLOW(nmemb, size)) + panic("mallocarray_domainset: %zu * %zu overflowed", nmemb, size); + + return (malloc_domainset(size * nmemb, type, ds, flags)); +} + #ifdef INVARIANTS static void free_save_type(void *addr, struct malloc_type *mtp, u_long size) diff --git a/sys/sys/malloc.h b/sys/sys/malloc.h index 54a05e94a3a2..0c585c5a0dcf 100644 --- a/sys/sys/malloc.h +++ b/sys/sys/malloc.h @@ -246,6 +246,9 @@ void *malloc_domainset(size_t size, struct malloc_type *type, void *mallocarray(size_t nmemb, size_t size, struct malloc_type *type, int flags) __malloc_like __result_use_check __alloc_size2(1, 2); +void *mallocarray_domainset(size_t nmemb, size_t size, struct malloc_type *type, + struct domainset *ds, int flags) __malloc_like __result_use_check + __alloc_size2(1, 2); void *malloc_exec(size_t size, struct malloc_type *type, int flags) __malloc_like __result_use_check __alloc_size(1); void *malloc_domainset_exec(size_t size, struct malloc_type *type,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202103061041.126Af0Eq003184>