Module Name: src
Committed By: christos
Date: Tue Nov 7 18:36:28 UTC 2017
Modified Files:
src/share/man/man9: Makefile kmem.9
Log Message:
document kmem_strdupsize/kmem_strdupfree
To generate a diff of this commit:
cvs rdiff -u -r1.416 -r1.417 src/share/man/man9/Makefile
cvs rdiff -u -r1.22 -r1.23 src/share/man/man9/kmem.9
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/man/man9/Makefile
diff -u src/share/man/man9/Makefile:1.416 src/share/man/man9/Makefile:1.417
--- src/share/man/man9/Makefile:1.416 Tue Oct 31 04:10:11 2017
+++ src/share/man/man9/Makefile Tue Nov 7 13:36:27 2017
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.416 2017/10/31 08:10:11 jdolecek Exp $
+# $NetBSD: Makefile,v 1.417 2017/11/07 18:36:27 christos Exp $
# Makefile for section 9 (kernel function and variable) manual pages.
@@ -448,7 +448,9 @@ MLINKS+=kmem.9 kmem_alloc.9 \
kmem.9 kmem_intr_alloc.9 \
kmem.9 kmem_intr_free.9 \
kmem.9 kmem_intr_zalloc.9 \
- kmem.9 kmem_asprintf.9
+ kmem.9 kmem_asprintf.9 \
+ kmem.9 kmem_strdupsize.9 \
+ kmem.9 kmem_strfree.9
MAN+= kpreempt.9
MLINKS+=kpreempt.9 kpreempt_disable.9 \
kpreempt.9 kpreempt_disabled.9 \
Index: src/share/man/man9/kmem.9
diff -u src/share/man/man9/kmem.9:1.22 src/share/man/man9/kmem.9:1.23
--- src/share/man/man9/kmem.9:1.22 Sat Aug 26 17:58:31 2017
+++ src/share/man/man9/kmem.9 Tue Nov 7 13:36:27 2017
@@ -1,4 +1,4 @@
-.\" $NetBSD: kmem.9,v 1.22 2017/08/26 21:58:31 joerg Exp $
+.\" $NetBSD: kmem.9,v 1.23 2017/11/07 18:36:27 christos Exp $
.\"
.\" Copyright (c)2006 YAMAMOTO Takashi,
.\" All rights reserved.
@@ -25,7 +25,7 @@
.\" SUCH DAMAGE.
.\"
.\" ------------------------------------------------------------
-.Dd February 28, 2016
+.Dd November 7, 2017
.Dt KMEM 9
.Os
.\" ------------------------------------------------------------
@@ -59,6 +59,13 @@
.Ft char *
.Fn kmem_asprintf \
"const char *fmt" "..."
+.\" ---
+.Ft char *
+.Fn kmem_strdupsize \
+"const char *str" "size_t *size" "km_flag_t kmflags"
+.Ft void
+.Fn kmem_strfree \
+"char *str"
.\" ------------------------------------------------------------
.Pp
.Cd "options KMEM_SIZE"
@@ -163,6 +170,31 @@ These routines are for the special cases
Normally,
.Xr pool_cache 9
should be used for memory allocation from interrupt context.
+.Pp
+The
+.Fn kmem_strdupsize
+function is a utility function that can be used to copy the string in the
+.Fa str
+argument to a new buffer allocated using
+.Fn kmem_alloc
+and optionally return the size of the allocation (the length of the string
+plus the trailing
+.Dv NUL )
+in the
+.Fa size
+argument if that is not
+.Dv NULL .
+.Pp
+The
+.Fn kmem_strfree
+function can be used to free a
+.Dv NUL
+terminated string computing the length of the string using
+.Xr strlen 3
+and adding one for the
+.Dv NUL
+and then using
+.Fn kmem_free .
.\" ------------------------------------------------------------
.Sh NOTES
Making
@@ -313,7 +345,11 @@ is enabled by default on
.Dv DEBUG .
.Sh RETURN VALUES
On success,
-.Fn kmem_alloc
+.Fn kmem_alloc ,
+.Fn kmem_asprintf ,
+.Fn kmem_intr_alloc ,
+.Fn kmem_intr_zalloc ,
+.Fn kmem_strdupsize ,
and
.Fn kmem_zalloc
return a pointer to allocated memory.
@@ -335,12 +371,16 @@ subsystem is implemented within the file
.Xr uvm_km 9
.\" ------------------------------------------------------------
.Sh CAVEATS
-Neither
-.Fn kmem_alloc
-nor
-.Fn kmem_free
-can be used from interrupt context, from a soft interrupt, or from
-a callout.
+The
+.Fn kmem_alloc ,
+.Fn kmem_asprintf ,
+.Fn kmem_free ,
+.Fn kmem_strdupsize ,
+.Fn kmem_strfree ,
+and
+.Fn kmem_zalloc
+functions cannot be used from interrupt context, from a soft interrupt,
+or from a callout.
Use
.Xr pool_cache 9
in these situations.