summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport/src/printk.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-15 15:02:43 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-15 15:02:43 +0000
commit7bd0dbc385ae19569fe3a5a1eebde201400138cd (patch)
tree714ec10d8a301628d0575af393a5426cdcb23aeb /cpukit/libcsupport/src/printk.c
parent4a6d16043f4d89f3a2766f302bf170687db87eaf (diff)
downloadrtems-7bd0dbc385ae19569fe3a5a1eebde201400138cd.tar.bz2
2009-05-15 Joel Sherrill <joel.sherrill@OARcorp.com>
* libcsupport/Makefile.am, libcsupport/src/printk.c: Restructure to make analysis and coverage easier. Now 100% covered. * libcsupport/src/vprintk.c: New file.
Diffstat (limited to '')
-rw-r--r--cpukit/libcsupport/src/printk.c137
1 files changed, 0 insertions, 137 deletions
diff --git a/cpukit/libcsupport/src/printk.c b/cpukit/libcsupport/src/printk.c
index 9754574c38..41864164ce 100644
--- a/cpukit/libcsupport/src/printk.c
+++ b/cpukit/libcsupport/src/printk.c
@@ -25,143 +25,6 @@
#include <rtems/bspIo.h>
/*
- * printNum - print number in a given base.
- * Arguments
- * num - number to print
- * base - base used to print the number.
- */
-static void printNum(
- long unsigned int num,
- int base,
- int sign,
- int maxwidth,
- int lead
-)
-{
- long unsigned int n;
- int count;
- char toPrint[20];
-
- if ( (sign == 1) && ((long)num < 0) ) {
- BSP_output_char('-');
- num = -num;
- if (maxwidth) maxwidth--;
- }
-
- count = 0;
- while ((n = num / base) > 0) {
- toPrint[count++] = (num - (n*base));
- num = n;
- }
- toPrint[count++] = num;
-
- for (n=maxwidth ; n > count; n-- )
- BSP_output_char(lead);
-
- for (n = 0; n < count; n++) {
- BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
- }
-}
-
-/*
- * vprintk
- *
- * A simplified version of printf intended for use when the
- * console is not yet initialized or in ISR's.
- *
- * Arguments:
- * as in printf: fmt - format string, ... - unnamed arguments.
- */
-void vprintk(
- const char *fmt,
- va_list ap
-)
-{
- char c, *str;
- int lflag, base, sign, width, lead, minus;
-
- for (; *fmt != '\0'; fmt++) {
- lflag = 0;
- base = 0;
- sign = 0;
- width = 0;
- minus = 0;
- lead = ' ';
- if (*fmt == '%') {
- fmt++;
- if (*fmt == '0' ) {
- lead = '0';
- fmt++;
- }
- if (*fmt == '-' ) {
- minus = 1;
- fmt++;
- }
- while (*fmt >= '0' && *fmt <= '9' ) {
- width *= 10;
- width += (*fmt - '0');
- fmt++;
- }
-
- if ((c = *fmt) == 'l') {
- lflag = 1;
- c = *++fmt;
- }
- switch (c) {
- case 'o': case 'O': base = 8; sign = 0; break;
- case 'i': case 'I':
- case 'd': case 'D': base = 10; sign = 1; break;
- case 'u': case 'U': base = 10; sign = 0; break;
- case 'x': case 'X': base = 16; sign = 0; break;
- case 'p': base = 16; sign = 0; lflag = 1; break;
- case 's':
- { int i, len;
- char *s;
-
- str = va_arg(ap, char *);
-
- /* calculate length of string */
- for ( len=0, s=str ; *s ; len++, s++ )
- ;
-
- /* leading spaces */
- if ( !minus )
- for ( i=len ; i<width ; i++ )
- BSP_output_char(' ');
-
- /* no width option */
- if (width == 0) {
- width = len;
- }
-
- /* output the string */
- for ( i=0 ; i<width && *str ; str++ )
- BSP_output_char(*str);
-
- /* trailing spaces */
- if ( minus )
- for ( i=len ; i<width ; i++ )
- BSP_output_char(' ');
- }
- break;
- case 'c':
- BSP_output_char(va_arg(ap, int));
- break;
- default:
- BSP_output_char(c);
- break;
- } /* switch*/
-
- if (base)
- printNum(lflag ? va_arg(ap, long int) : (long int)va_arg(ap, int),
- base, sign, width, lead);
- } else {
- BSP_output_char(*fmt);
- }
- }
-}
-
-/*
* printk
*
* Kernel printf function requiring minimal infrastrure.