Changeset c859753 in mainline


Ignore:
Timestamp:
2008-06-03T14:55:09Z (17 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
419886f6
Parents:
aa48a9d
Message:

remove original klog
permanent kernel cyclic log buffer
proper printf formatting

Location:
kernel/generic/src/console
Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/console/chardev.c

    raa48a9d rc859753  
    4343 * @param op Implementation of character device operations.
    4444 */
    45 void chardev_initialize(char *name,chardev_t *chardev,
     45void chardev_initialize(char *name, chardev_t *chardev,
    4646                        chardev_operations_t *op)
    4747{
  • kernel/generic/src/console/cmd.c

    raa48a9d rc859753  
    564564        unative_t sec = uptime->seconds1;
    565565       
    566         printf("Up %u days, %u hours, %u minutes, %u seconds\n",
     566        printf("Up %" PRIun " days, %" PRIun " hours, %" PRIun " minutes, %" PRIun " seconds\n",
    567567                sec / 86400, (sec % 86400) / 3600, (sec % 3600) / 60, sec % 60);
    568568       
     
    633633        } else {
    634634                symbol = get_symtab_entry(symaddr);
    635                 printf("Calling %s() (%.*p)\n", symbol, sizeof(uintptr_t) * 2, symaddr);
     635                printf("Calling %s() (%p)\n", symbol, symaddr);
    636636#ifdef ia64
    637637                fptr.f = symaddr;
     
    641641                f =  (unative_t (*)(void)) symaddr;
    642642#endif
    643                 printf("Result: %#zx\n", f());
     643                printf("Result: %#" PRIxn "\n", f());
    644644        }
    645645       
     
    687687                unative_t f;
    688688                unative_t gp;
    689         }fptr;
     689        } fptr;
    690690#endif
    691691
     
    699699                symbol = get_symtab_entry(symaddr);
    700700
    701                 printf("Calling f(%#zx): %.*p: %s\n", arg1, sizeof(uintptr_t) * 2, symaddr, symbol);
     701                printf("Calling f(%#" PRIxn "): %p: %s\n", arg1, symaddr, symbol);
    702702#ifdef ia64
    703703                fptr.f = symaddr;
     
    707707                f =  (unative_t (*)(unative_t,...)) symaddr;
    708708#endif
    709                 printf("Result: %#zx\n", f(arg1));
     709                printf("Result: %#" PRIxn "\n", f(arg1));
    710710        }
    711711       
     
    736736        } else {
    737737                symbol = get_symtab_entry(symaddr);
    738                 printf("Calling f(0x%zx,0x%zx): %.*p: %s\n",
    739                        arg1, arg2, sizeof(uintptr_t) * 2, symaddr, symbol);
     738                printf("Calling f(%#" PRIxn ", %#" PRIxn "): %p: %s\n",
     739                       arg1, arg2, symaddr, symbol);
    740740#ifdef ia64
    741741                fptr.f = symaddr;
     
    745745                f =  (unative_t (*)(unative_t,unative_t,...)) symaddr;
    746746#endif
    747                 printf("Result: %#zx\n", f(arg1, arg2));
     747                printf("Result: %#" PRIxn "\n", f(arg1, arg2));
    748748        }
    749749       
     
    775775        } else {
    776776                symbol = get_symtab_entry(symaddr);
    777                 printf("Calling f(0x%zx,0x%zx, 0x%zx): %.*p: %s\n",
    778                        arg1, arg2, arg3, sizeof(uintptr_t) * 2, symaddr, symbol);
     777                printf("Calling f(%#" PRIxn ",%#" PRIxn ", %#" PRIxn "): %p: %s\n",
     778                       arg1, arg2, arg3, symaddr, symbol);
    779779#ifdef ia64
    780780                fptr.f = symaddr;
     
    784784                f =  (unative_t (*)(unative_t,unative_t,unative_t,...)) symaddr;
    785785#endif
    786                 printf("Result: %#zx\n", f(arg1, arg2, arg3));
     786                printf("Result: %#" PRIxn "\n", f(arg1, arg2, arg3));
    787787        }
    788788       
     
    857857                if (pointer)
    858858                        addr = (uint32_t *)(*(unative_t *)addr);
    859                 printf("Writing 0x%x -> %.*p\n", arg1, sizeof(uintptr_t) * 2, addr);
     859                printf("Writing %#" PRIx64 " -> %p\n", arg1, addr);
    860860                *addr = arg1;
    861861               
     
    10261026        order(dt, &cycles, &suffix);
    10271027               
    1028         printf("Time: %llu%c cycles\n", cycles, suffix);
     1028        printf("Time: %" PRIu64 "%c cycles\n", cycles, suffix);
    10291029       
    10301030        if (ret == NULL) {
     
    10541054       
    10551055        for (i = 0; i < cnt; i++) {
    1056                 printf("%s (%d/%d) ... ", test->name, i + 1, cnt);
     1056                printf("%s (%u/%u) ... ", test->name, i + 1, cnt);
    10571057               
    10581058                /* Update and read thread accounting
     
    10821082                data[i] = dt;
    10831083                order(dt, &cycles, &suffix);
    1084                 printf("OK (%llu%c cycles)\n", cycles, suffix);
     1084                printf("OK (%" PRIu64 "%c cycles)\n", cycles, suffix);
    10851085        }
    10861086       
     
    10951095               
    10961096                order(sum / (uint64_t) cnt, &cycles, &suffix);
    1097                 printf("Average\t\t%llu%c\n", cycles, suffix);
     1097                printf("Average\t\t%" PRIu64 "%c\n", cycles, suffix);
    10981098        }
    10991099       
  • kernel/generic/src/console/console.c

    raa48a9d rc859753  
    4444#include <atomic.h>
    4545
    46 #define BUFLEN 2048
    47 static char debug_buffer[BUFLEN];
    48 static size_t offset = 0;
    49 /** Initialize stdout to something that does not print, but does not fail
    50  *
    51  * Save data in some buffer so that it could be retrieved in the debugger
    52  */
    53 static void null_putchar(chardev_t *d, const char ch)
    54 {
    55         if (offset >= BUFLEN)
    56                 offset = 0;
    57         debug_buffer[offset++] = ch;
    58 }
     46#define KLOG_SIZE 4096
     47
     48/**< Kernel log cyclic buffer */
     49static char klog[KLOG_SIZE];
     50
     51/**< First kernel log characters */
     52static index_t klog_start = 0;
     53/**< Number of valid kernel log characters */
     54static size_t klog_len = 0;
     55/**< Number of stored (not printed) kernel log characters */
     56static size_t klog_stored = 0;
    5957
    6058static chardev_operations_t null_stdout_ops = {
    61         .write = null_putchar
     59        .suspend = NULL,
     60        .resume = NULL,
     61        .write = NULL,
     62        .read = NULL
    6263};
    6364
     
    9192                /* no other way of interacting with user, halt */
    9293                if (CPU)
    93                         printf("cpu%d: ", CPU->id);
     94                        printf("cpu%u: ", CPU->id);
    9495                else
    9596                        printf("cpu: ");
     
    162163void putchar(char c)
    163164{
     165        if ((klog_stored > 0) && (stdout->op->write)) {
     166                /* Print charaters stored in kernel log */
     167                index_t i;
     168                for (i = klog_len - klog_stored; i < klog_len; i++)
     169                        stdout->op->write(stdout, klog[(klog_start + i) % KLOG_SIZE]);
     170                klog_stored = 0;
     171        }
     172       
     173        /* Store character in the cyclic kernel log */
     174        klog[(klog_start + klog_len) % KLOG_SIZE] = c;
     175        if (klog_len < KLOG_SIZE)
     176                klog_len++;
     177        else
     178                klog_start = (klog_start + 1) % KLOG_SIZE;
     179       
    164180        if (stdout->op->write)
    165181                stdout->op->write(stdout, c);
     182        else {
     183                /* The character is just in the kernel log */
     184                if (klog_stored < klog_len)
     185                        klog_stored++;
     186        }
    166187}
    167188
Note: See TracChangeset for help on using the changeset viewer.