diff options
author | oshogbo <oshogbo@FreeBSD.org> | 2015-05-01 17:50:24 +0000 |
---|---|---|
committer | oshogbo <oshogbo@FreeBSD.org> | 2015-05-01 17:50:24 +0000 |
commit | fecee76e5a26a3b0a0cac30b34c660389e57579e (patch) | |
tree | 95bd23ebae82e60a95e9e8cbd3ff17a0c70e9e29 | |
parent | 1b801f948fa7e3cbbdf4d6f3f5a0f1ee9af04ad0 (diff) | |
download | FreeBSD-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/Makefile | 1 | ||||
-rw-r--r-- | lib/libnv/nv.3 | 11 | ||||
-rw-r--r-- | sys/kern/subr_nvlist.c | 11 | ||||
-rw-r--r-- | sys/sys/nv.h | 1 |
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); |