From e754c6bbb73872f3a2613db6105728622a267cb6 Mon Sep 17 00:00:00 2001 From: Robert Watson Date: Sun, 24 Jul 2005 01:41:47 +0000 Subject: [PATCH] Having decided not to provide a libmemstat(3) error number to text conversion routine, now change my mind and add one, memstat_strerror(3), which returns a const char * pointer to a string describing the error, to be used on the results of memstat_mtl_geterror(). While here, also correct a minor typo in the HISTORY man page. Pointers on improving ease of internationalization would be appreciated. MFC after: 1 day --- lib/libmemstat/Makefile | 1 + lib/libmemstat/libmemstat.3 | 14 +++++++++++--- lib/libmemstat/memstat.c | 21 +++++++++++++++++++++ lib/libmemstat/memstat.h | 5 +++++ 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/lib/libmemstat/Makefile b/lib/libmemstat/Makefile index e58f99e30355..1d3c43d28731 100644 --- a/lib/libmemstat/Makefile +++ b/lib/libmemstat/Makefile @@ -17,6 +17,7 @@ MLINKS+= libmemstat.3 memstat_mtl_next.3 MLINKS+= libmemstat.3 memstat_mtl_find.3 MLINKS+= libmemstat.3 memstat_mtl_free.3 MLINKS+= libmemstat.3 memstat_mtl_geterror.3 +MLINKS+= libmemstat.3 memstat_strerror.3 MLINKS+= libmemstat.3 memstat_sysctl_all.3 MLINKS+= libmemstat.3 memstat_sysctl_malloc.3 MLINKS+= libmemstat.3 memstat_sysctl_uma.3 diff --git a/lib/libmemstat/libmemstat.3 b/lib/libmemstat/libmemstat.3 index 2e9f0bfc5ca0..0bc341035c32 100644 --- a/lib/libmemstat/libmemstat.3 +++ b/lib/libmemstat/libmemstat.3 @@ -35,6 +35,9 @@ .Sh SYNOPSIS .In sys/types.h .In memstat.h +.Ss General Functions +.Ft const char * +.Fn memstat_strerror "int error" .Ss Memory Type List Management Functions .Ft struct memory_type_list * .Fn memstat_mtl_alloc "void" @@ -150,7 +153,9 @@ Repeated calls will incrementally update the list of memory types, permitting tracking over time without recreating all list state. If an error is detected during a query call, error condition information may be retrieved using -.Fn memstat_mtl_geterror . +.Fn memstat_mtl_geterror , +and converted to a user-readable string using +.Fn memstat_strerror . .Pp Freeing the list will free all memory type data in the list, and so invalidates any outstanding pointers to entries in the list. @@ -356,7 +361,10 @@ on success, or on failure. If a failure is returned, the list error access method, .Fn memstat_mtl_geterror , -may be used to retrieve the error state. Possible error values are: +may be used to retrieve the error state. +The string representation of the error may be retrieved using +.Fn memstat_strerror . +Possible error values are: .Pp .Bl -tag -width "MEMSTAT_ERROR_TOOMANYCPUS" -compact -offset wee .It Dv MEMSTAT_ERROR_UNDEFINED @@ -426,7 +434,7 @@ printf("Mbufs: %llu\\n", (unsigned long long)mbuf_count); .Xr uma 9 .Sh HISTORY The -.Nm memstat +.Nm libmemstat library appeared in .Fx 6.0 . .Sh AUTHORS diff --git a/lib/libmemstat/memstat.c b/lib/libmemstat/memstat.c index f053e958ab49..f32541feb55e 100644 --- a/lib/libmemstat/memstat.c +++ b/lib/libmemstat/memstat.c @@ -38,6 +38,27 @@ #include "memstat.h" #include "memstat_internal.h" +const char * +memstat_strerror(int error) +{ + + switch (error) { + case MEMSTAT_ERROR_NOMEMORY: + return ("Cannot allocate memory"); + case MEMSTAT_ERROR_VERSION: + return ("Version mismatch"); + case MEMSTAT_ERROR_PERMISSION: + return ("Permission denied"); + case MEMSTAT_ERROR_TOOMANYCPUS: + return ("Too many CPUs"); + case MEMSTAT_ERROR_DATAERROR: + return ("Data format error"); + case MEMSTAT_ERROR_UNDEFINED: + default: + return ("Unknown error"); + } +} + struct memory_type_list * memstat_mtl_alloc(void) { diff --git a/lib/libmemstat/memstat.h b/lib/libmemstat/memstat.h index c2e31744231f..f46640876caf 100644 --- a/lib/libmemstat/memstat.h +++ b/lib/libmemstat/memstat.h @@ -89,6 +89,11 @@ struct memory_type; struct memory_type_list; __BEGIN_DECLS +/* + * Functions that operate without memory type or memory type list context. + */ +const char *memstat_strerror(int error); + /* * Functions for managing memory type and statistics data. */