Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys Give humanize_number & format_bytes their own spots in t...
details: https://anonhg.NetBSD.org/src/rev/7726ce57a1b6
branches: trunk
changeset: 747795:7726ce57a1b6
user: pooka <pooka%NetBSD.org@localhost>
date: Fri Oct 02 15:48:41 2009 +0000
description:
Give humanize_number & format_bytes their own spots in the sun and move
from kern_subr to subr_humanize.
diffstat:
sys/conf/files | 3 +-
sys/kern/kern_subr.c | 76 +--------------------------------
sys/kern/subr_humanize.c | 108 +++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 112 insertions(+), 75 deletions(-)
diffs (226 lines):
diff -r f3afd999353e -r 7726ce57a1b6 sys/conf/files
--- a/sys/conf/files Fri Oct 02 15:35:46 2009 +0000
+++ b/sys/conf/files Fri Oct 02 15:48:41 2009 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: files,v 1.958 2009/09/30 20:44:49 jmcneill Exp $
+# $NetBSD: files,v 1.959 2009/10/02 15:48:41 pooka Exp $
# @(#)files.newconf 7.5 (Berkeley) 5/10/93
version 20090313
@@ -1483,6 +1483,7 @@
file kern/subr_exec_fd.c
file kern/subr_extent.c
file kern/subr_hash.c
+file kern/subr_humanize.c
file kern/subr_kmem.c
file kern/subr_kobj.c
file kern/subr_lockdebug.c
diff -r f3afd999353e -r 7726ce57a1b6 sys/kern/kern_subr.c
--- a/sys/kern/kern_subr.c Fri Oct 02 15:35:46 2009 +0000
+++ b/sys/kern/kern_subr.c Fri Oct 02 15:48:41 2009 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_subr.c,v 1.200 2009/09/25 19:21:09 dyoung Exp $ */
+/* $NetBSD: kern_subr.c,v 1.201 2009/10/02 15:48:41 pooka Exp $ */
/*-
* Copyright (c) 1997, 1998, 1999, 2002, 2007, 2008 The NetBSD Foundation, Inc.
@@ -79,7 +79,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.200 2009/09/25 19:21:09 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.201 2009/10/02 15:48:41 pooka Exp $");
#include "opt_ddb.h"
#include "opt_md.h"
@@ -1220,78 +1220,6 @@
}
/*
- * snprintf() `bytes' into `buf', reformatting it so that the number,
- * plus a possible `x' + suffix extension) fits into len bytes (including
- * the terminating NUL).
- * Returns the number of bytes stored in buf, or -1 if there was a problem.
- * E.g, given a len of 9 and a suffix of `B':
- * bytes result
- * ----- ------
- * 99999 `99999 B'
- * 100000 `97 kB'
- * 66715648 `65152 kB'
- * 252215296 `240 MB'
- */
-int
-humanize_number(char *buf, size_t len, uint64_t bytes, const char *suffix,
- int divisor)
-{
- /* prefixes are: (none), kilo, Mega, Giga, Tera, Peta, Exa */
- const char *prefixes;
- int r;
- uint64_t umax;
- size_t i, suffixlen;
-
- if (buf == NULL || suffix == NULL)
- return (-1);
- if (len > 0)
- buf[0] = '\0';
- suffixlen = strlen(suffix);
- /* check if enough room for `x y' + suffix + `\0' */
- if (len < 4 + suffixlen)
- return (-1);
-
- if (divisor == 1024) {
- /*
- * binary multiplies
- * XXX IEC 60027-2 recommends Ki, Mi, Gi...
- */
- prefixes = " KMGTPE";
- } else
- prefixes = " kMGTPE"; /* SI for decimal multiplies */
-
- umax = 1;
- for (i = 0; i < len - suffixlen - 3; i++) {
- umax *= 10;
- if (umax > bytes)
- break;
- }
- for (i = 0; bytes >= umax && prefixes[i + 1]; i++)
- bytes /= divisor;
-
- r = snprintf(buf, len, "%qu%s%c%s", (unsigned long long)bytes,
- i == 0 ? "" : " ", prefixes[i], suffix);
-
- return (r);
-}
-
-int
-format_bytes(char *buf, size_t len, uint64_t bytes)
-{
- int rv;
- size_t nlen;
-
- rv = humanize_number(buf, len, bytes, "B", 1024);
- if (rv != -1) {
- /* nuke the trailing ` B' if it exists */
- nlen = strlen(buf) - 2;
- if (strcmp(&buf[nlen], " B") == 0)
- buf[nlen] = '\0';
- }
- return (rv);
-}
-
-/*
* Return true if system call tracing is enabled for the specified process.
*/
bool
diff -r f3afd999353e -r 7726ce57a1b6 sys/kern/subr_humanize.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/kern/subr_humanize.c Fri Oct 02 15:48:41 2009 +0000
@@ -0,0 +1,108 @@
+/* $NetBSD: subr_humanize.c,v 1.1 2009/10/02 15:48:41 pooka Exp $ */
+
+/*-
+ * Copyright (c) 1997, 1998, 1999, 2002, 2007, 2008 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Luke Mewburn.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: subr_humanize.c,v 1.1 2009/10/02 15:48:41 pooka Exp $");
+
+#include <sys/types.h>
+#include <sys/systm.h>
+
+/*
+ * snprintf() `bytes' into `buf', reformatting it so that the number,
+ * plus a possible `x' + suffix extension) fits into len bytes (including
+ * the terminating NUL).
+ * Returns the number of bytes stored in buf, or -1 if there was a problem.
+ * E.g, given a len of 9 and a suffix of `B':
+ * bytes result
+ * ----- ------
+ * 99999 `99999 B'
+ * 100000 `97 kB'
+ * 66715648 `65152 kB'
+ * 252215296 `240 MB'
+ */
+int
+humanize_number(char *buf, size_t len, uint64_t bytes, const char *suffix,
+ int divisor)
+{
+ /* prefixes are: (none), kilo, Mega, Giga, Tera, Peta, Exa */
+ const char *prefixes;
+ int r;
+ uint64_t umax;
+ size_t i, suffixlen;
+
+ if (buf == NULL || suffix == NULL)
+ return (-1);
+ if (len > 0)
+ buf[0] = '\0';
+ suffixlen = strlen(suffix);
+ /* check if enough room for `x y' + suffix + `\0' */
+ if (len < 4 + suffixlen)
+ return (-1);
+
+ if (divisor == 1024) {
+ /*
+ * binary multiplies
+ * XXX IEC 60027-2 recommends Ki, Mi, Gi...
+ */
+ prefixes = " KMGTPE";
+ } else
+ prefixes = " kMGTPE"; /* SI for decimal multiplies */
+
+ umax = 1;
+ for (i = 0; i < len - suffixlen - 3; i++) {
+ umax *= 10;
+ if (umax > bytes)
+ break;
+ }
+ for (i = 0; bytes >= umax && prefixes[i + 1]; i++)
+ bytes /= divisor;
+
+ r = snprintf(buf, len, "%qu%s%c%s", (unsigned long long)bytes,
+ i == 0 ? "" : " ", prefixes[i], suffix);
+
+ return (r);
+}
+
+int
+format_bytes(char *buf, size_t len, uint64_t bytes)
+{
+ int rv;
+ size_t nlen;
+
+ rv = humanize_number(buf, len, bytes, "B", 1024);
+ if (rv != -1) {
+ /* nuke the trailing ` B' if it exists */
+ nlen = strlen(buf) - 2;
+ if (strcmp(&buf[nlen], " B") == 0)
+ buf[nlen] = '\0';
+ }
+ return (rv);
+}
Home |
Main Index |
Thread Index |
Old Index