summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroshogbo <oshogbo@FreeBSD.org>2015-05-01 17:50:24 +0000
committeroshogbo <oshogbo@FreeBSD.org>2015-05-01 17:50:24 +0000
commitfecee76e5a26a3b0a0cac30b34c660389e57579e (patch)
tree95bd23ebae82e60a95e9e8cbd3ff17a0c70e9e29
parent1b801f948fa7e3cbbdf4d6f3f5a0f1ee9af04ad0 (diff)
downloadFreeBSD-src-fecee76e5a26a3b0a0cac30b34c660389e57579e.zip
FreeBSD-src-fecee76e5a26a3b0a0cac30b34c660389e57579e.tar.gz
Add nvlist_flags() function, which returns nvlist's public flags.
Approved by: pjd (mentor)
-rw-r--r--lib/libnv/Makefile1
-rw-r--r--lib/libnv/nv.311
-rw-r--r--sys/kern/subr_nvlist.c11
-rw-r--r--sys/sys/nv.h1
4 files changed, 23 insertions, 1 deletions
diff --git a/lib/libnv/Makefile b/lib/libnv/Makefile
index 766d691..8b2fc78 100644
--- a/lib/libnv/Makefile
+++ b/lib/libnv/Makefile
@@ -47,6 +47,7 @@ MLINKS+=nv.3 nvlist_add_binary.3 \
nv.3 nvlist_exists_string.3 \
nv.3 nvlist_exists_type.3 \
nv.3 nvlist_fdump.3 \
+ nv.3 nvlist_flags.3 \
nv.3 nvlist_free.3 \
nv.3 nvlist_free_binary.3 \
nv.3 nvlist_free_bool.3 \
diff --git a/lib/libnv/nv.3 b/lib/libnv/nv.3
index be6e0fe..bbb7b03 100644
--- a/lib/libnv/nv.3
+++ b/lib/libnv/nv.3
@@ -28,7 +28,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd January 30, 2015
+.Dd May 1, 2015
.Dt NV 3
.Os
.Sh NAME
@@ -37,6 +37,7 @@
.Nm nvlist_error ,
.Nm nvlist_set_error ,
.Nm nvlist_empty ,
+.Nm nvlist_flags ,
.Nm nvlist_exists ,
.Nm nvlist_free ,
.Nm nvlist_clone ,
@@ -68,6 +69,8 @@
.Fn nvlist_set_error "nvlist_t *nvl, int error"
.Ft bool
.Fn nvlist_empty "const nvlist_t *nvl"
+.Ft int
+.Fn nvlist_flags "const nvlist_t *nvl"
.\"
.Ft "nvlist_t *"
.Fn nvlist_clone "const nvlist_t *nvl"
@@ -269,6 +272,12 @@ otherwise.
The nvlist must not be in error state.
.Pp
The
+.Fn nvlist_flags
+function returns flags used to create the nvlist with the
+.Fn nvlist_create
+function.
+.Pp
+The
.Fn nvlist_clone
functions clones the given nvlist.
The clone shares no resources with its origin.
diff --git a/sys/kern/subr_nvlist.c b/sys/kern/subr_nvlist.c
index 6f1d1d5..f96b890 100644
--- a/sys/kern/subr_nvlist.c
+++ b/sys/kern/subr_nvlist.c
@@ -230,6 +230,17 @@ nvlist_empty(const nvlist_t *nvl)
return (nvlist_first_nvpair(nvl) == NULL);
}
+int
+nvlist_flags(const nvlist_t *nvl)
+{
+
+ NVLIST_ASSERT(nvl);
+ PJDLOG_ASSERT(nvl->nvl_error == 0);
+ PJDLOG_ASSERT((nvl->nvl_flags & ~(NV_FLAG_PUBLIC_MASK)) == 0);
+
+ return (nvl->nvl_flags);
+}
+
static void
nvlist_report_missing(int type, const char *name)
{
diff --git a/sys/sys/nv.h b/sys/sys/nv.h
index f113dd9..5c342dc 100644
--- a/sys/sys/nv.h
+++ b/sys/sys/nv.h
@@ -75,6 +75,7 @@ nvlist_t *nvlist_create(int flags);
void nvlist_destroy(nvlist_t *nvl);
int nvlist_error(const nvlist_t *nvl);
bool nvlist_empty(const nvlist_t *nvl);
+int nvlist_flags(const nvlist_t *nvl);
void nvlist_set_error(nvlist_t *nvl, int error);
nvlist_t *nvlist_clone(const nvlist_t *nvl);
OpenPOWER on IntegriCloud