[rtems-libbsd commit] Modify rtems_bsd_set_vprintf_handler()
Sebastian Huber
sebh at rtems.org
Wed Nov 9 09:01:10 UTC 2016
Module: rtems-libbsd
Branch: master
Commit: 520ab224ca812287640930135d57bf9d781d4476
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=520ab224ca812287640930135d57bf9d781d4476
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Tue Jun 28 08:35:06 2016 +0200
Modify rtems_bsd_set_vprintf_handler()
Return previous vprintf()-handler in rtems_bsd_set_vprintf_handler().
---
rtemsbsd/include/rtems/bsd/bsd.h | 13 ++++++++++---
rtemsbsd/rtems/rtems-kernel-vprintf.c | 12 ++++++++----
testsuite/log01/test_main.c | 4 +++-
3 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/rtemsbsd/include/rtems/bsd/bsd.h b/rtemsbsd/include/rtems/bsd/bsd.h
index 2b09b18..0968062 100644
--- a/rtemsbsd/include/rtems/bsd/bsd.h
+++ b/rtemsbsd/include/rtems/bsd/bsd.h
@@ -207,14 +207,21 @@ int rtems_bsd_bus_root_resume(void);
int rtems_bsd_bus_root_detach(void);
/**
+ * @brief The output back-end for logging functions.
+ */
+typedef int (*rtems_bsd_vprintf_handler)(int, const char *, va_list);
+
+/**
* @brief Sets the output back-end for logging functions.
*
- * @param new_vprintf_handler The new output back-end for logging functions.
+ * @param new_handler The new output back-end for logging functions.
+ *
+ * @return The previous handler.
*
* @see rtems_bsd_vprintf().
*/
-void rtems_bsd_set_vprintf_handler(int (*new_vprintf_handler)
- (int, const char *, va_list));
+rtems_bsd_vprintf_handler rtems_bsd_set_vprintf_handler(
+ rtems_bsd_vprintf_handler new_handler);
/**
* @brief Output back-end for logging functions.
diff --git a/rtemsbsd/rtems/rtems-kernel-vprintf.c b/rtemsbsd/rtems/rtems-kernel-vprintf.c
index 6d0cf59..7364ec6 100644
--- a/rtemsbsd/rtems/rtems-kernel-vprintf.c
+++ b/rtemsbsd/rtems/rtems-kernel-vprintf.c
@@ -103,12 +103,16 @@ default_vprintf_handler(int level, const char *fmt, va_list ap)
static int (*vprintf_handler)(int, const char *, va_list) =
default_vprintf_handler;
-void
-rtems_bsd_set_vprintf_handler(int (*new_vprintf_handler)
- (int, const char *, va_list))
+rtems_bsd_vprintf_handler
+rtems_bsd_set_vprintf_handler(rtems_bsd_vprintf_handler new_handler)
{
+ rtems_bsd_vprintf_handler old_handler;
- vprintf_handler = new_vprintf_handler;
+ VPRINTF_LOCK();
+ old_handler = vprintf_handler;
+ vprintf_handler = new_handler;
+ VPRINTF_UNLOCK();
+ return (old_handler);
}
int
diff --git a/testsuite/log01/test_main.c b/testsuite/log01/test_main.c
index 3a4ef65..63077a5 100644
--- a/testsuite/log01/test_main.c
+++ b/testsuite/log01/test_main.c
@@ -32,8 +32,8 @@
#include <machine/rtems-bsd-kernel-space.h>
#include <sys/types.h>
+#include <sys/syslog.h>
#include <sys/systm.h>
-#include <syslog.h>
#include <assert.h>
#include <errno.h>
@@ -42,6 +42,8 @@
#include <stdlib.h>
#include <string.h>
+#include <rtems/bsd/bsd.h>
+
#define TEST_NAME "LIBBSD LOG 1"
typedef struct {
More information about the vc
mailing list