diff options
-rw-r--r-- | cpukit/ChangeLog | 6 | ||||
-rw-r--r-- | cpukit/include/rtems/bspIo.h | 13 | ||||
-rw-r--r-- | cpukit/libcsupport/Makefile.am | 3 | ||||
-rw-r--r-- | cpukit/libcsupport/src/getchark.c | 25 |
4 files changed, 45 insertions, 2 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index cc698fc0ce..097b309d0e 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,9 @@ +2008-09-22 Joel Sherrill <joel.sherrill@oarcorp.com> + + * include/rtems/bspIo.h, libcsupport/Makefile.am: Add genchark() for + polled debug input from the same device as printk(). + * libcsupport/src/getchark.c: New file. + 2008-09-22 Ralf Corsépius <ralf.corsepius@rtems.org> * aclocal/version.m4: Bump RTEMS_API to 4.10. diff --git a/cpukit/include/rtems/bspIo.h b/cpukit/include/rtems/bspIo.h index 3e8eb5a534..67c09fe816 100644 --- a/cpukit/include/rtems/bspIo.h +++ b/cpukit/include/rtems/bspIo.h @@ -25,7 +25,7 @@ extern "C" { * functionnality described after the next command. */ typedef void (*BSP_output_char_function_type) (char c); -typedef char (*BSP_polling_getchar_function_type) (void); +typedef int (*BSP_polling_getchar_function_type) (void); extern BSP_output_char_function_type BSP_output_char; extern BSP_polling_getchar_function_type BSP_poll_char; @@ -38,6 +38,17 @@ extern BSP_polling_getchar_function_type BSP_poll_char; */ #include <stdarg.h> +/** + * This method polls for a key in the simplest possible fashion + * from whatever the debug console device is. + * + * @return If a character is available, it is returned. Otherwise + * this method returns -1. + * + * @note This method uses the BSP_poll_char pointer to a BSP + * provided method. + */ +extern int getchark(void); extern void vprintk(const char *fmt, va_list ap); extern void printk(const char *fmt, ...); diff --git a/cpukit/libcsupport/Makefile.am b/cpukit/libcsupport/Makefile.am index 12395b1af7..f1361cfefe 100644 --- a/cpukit/libcsupport/Makefile.am +++ b/cpukit/libcsupport/Makefile.am @@ -99,7 +99,8 @@ LIBC_GLUE_C_FILES = src/__getpid.c src/__gettod.c src/__times.c \ BSD_LIBC_C_FILES = src/strlcpy.c src/strlcat.c -libcsupport_a_SOURCES = src/gxx_wrappers.c src/printk.c src/printk_plugin.c \ +libcsupport_a_SOURCES = src/gxx_wrappers.c src/getchark.c src/printk.c \ + src/printk_plugin.c \ $(BSD_LIBC_C_FILES) $(BASE_FS_C_FILES) $(MALLOC_C_FILES) \ $(ERROR_C_FILES) $(ASSOCIATION_C_FILES) diff --git a/cpukit/libcsupport/src/getchark.c b/cpukit/libcsupport/src/getchark.c new file mode 100644 index 0000000000..f501fc65f0 --- /dev/null +++ b/cpukit/libcsupport/src/getchark.c @@ -0,0 +1,25 @@ +/* + * COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems.h> +#include <rtems/bspIo.h> + +int getchark(void) +{ + if ( BSP_poll_char ) + return (*BSP_poll_char)(); + + return -1; +} |