From cb6fde65c12213be244b9c4f5102ec6756778830 Mon Sep 17 00:00:00 2001 From: ian Date: Sat, 14 Mar 2015 23:16:12 +0000 Subject: timecounter: Synchronize with FreeBSD Use sbuf_printf() for sysctl strings instead of stack buffers and snprintf(). --- cpukit/score/src/kern_tc.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/cpukit/score/src/kern_tc.c b/cpukit/score/src/kern_tc.c index 700c86b1de..a0f5ee68b1 100644 --- a/cpukit/score/src/kern_tc.c +++ b/cpukit/score/src/kern_tc.c @@ -36,7 +36,7 @@ #include #endif /* __rtems__ */ #include -__FBSDID("$FreeBSD r279728 2015-03-07T18:23:32Z$"); +__FBSDID("$FreeBSD r280012 2015-03-14T23:16:12Z$"); #include "opt_compat.h" #include "opt_ntp.h" @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD r279728 2015-03-07T18:23:32Z$"); #include #include #include +#include #include #include #include @@ -1549,18 +1550,18 @@ SYSCTL_PROC(_kern_timecounter, OID_AUTO, hardware, CTLTYPE_STRING | CTLFLAG_RW, static int sysctl_kern_timecounter_choice(SYSCTL_HANDLER_ARGS) { - char buf[32], *spc; + struct sbuf sb; struct timecounter *tc; int error; - spc = ""; - error = 0; - for (tc = timecounters; error == 0 && tc != NULL; tc = tc->tc_next) { - sprintf(buf, "%s%s(%d)", - spc, tc->tc_name, tc->tc_quality); - error = SYSCTL_OUT(req, buf, strlen(buf)); - spc = " "; + sbuf_new_for_sysctl(&sb, NULL, 0, req); + for (tc = timecounters; tc != NULL; tc = tc->tc_next) { + if (tc != timecounters) + sbuf_putc(&sb, ' '); + sbuf_printf(&sb, "%s(%d)", tc->tc_name, tc->tc_quality); } + error = sbuf_finish(&sb); + sbuf_delete(&sb); return (error); } -- cgit v1.2.3