Changeset e2b762ec in mainline for kernel/generic/src


Ignore:
Timestamp:
2009-03-16T21:58:05Z (17 years ago)
Author:
Jiri Svoboda <jirik.svoboda@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f36c061
Parents:
d9167a1c
Message:

Make kernel symbol information optional.

Location:
kernel/generic/src
Files:
4 edited

Legend:

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

    rd9167a1c re2b762ec  
    5454#include <macros.h>
    5555#include <debug.h>
    56 #include <symtab.h>
    5756#include <cpu.h>
    5857#include <mm/tlb.h>
     
    6766#include <ipc/irq.h>
    6867
     68#ifdef CONFIG_SYMTAB
     69#include <symtab.h>
     70#endif
     71
    6972#ifdef CONFIG_TEST
    7073#include <test.h>
     
    168171};
    169172
     173#ifdef CONFIG_SYMTAB
    170174/* Data and methods for 'symaddr' command. */
    171175static int cmd_symaddr(cmd_arg_t *argv);
     
    183187        .argv = &symaddr_argv
    184188};
     189#endif
    185190
    186191static char set_buf[MAX_CMDLINE+1];
     
    459464        &set4_info,
    460465        &slabs_info,
     466#ifdef CONFIG_SYMTAB
    461467        &symaddr_info,
     468#endif
    462469        &sched_info,
    463470        &threads_info,
     
    606613}
    607614
     615#ifdef CONFIG_SYMTAB
     616
    608617/** Search symbol table */
    609618int cmd_symaddr(cmd_arg_t *argv)
     
    614623}
    615624
     625#endif
     626
    616627/** Call function with zero parameters */
    617628int cmd_call0(cmd_arg_t *argv)
    618629{
     630#ifdef CONFIG_SYMTAB
    619631        uintptr_t symaddr;
    620         char *symbol;
    621632        unative_t (*fnc)(void);
    622633        fncptr_t fptr;
    623        
     634
    624635        symaddr = get_symbol_addr((char *) argv->buffer);
    625636        if (!symaddr)
     
    629640                printf("Duplicate symbol, be more specific.\n");
    630641        } else {
    631                 symbol = get_symtab_entry(symaddr);
    632642                fnc = (unative_t (*)(void)) arch_construct_function(&fptr, (void *) symaddr, (void *) cmd_call0);
    633                 printf("Calling %s() (%p)\n", symbol, symaddr);
     643                printf("Calling %s() (%p)\n", argv->buffer, symaddr);
    634644                printf("Result: %#" PRIxn "\n", fnc());
    635645        }
    636        
     646#endif
    637647        return 1;
    638648}
     
    670680int cmd_call1(cmd_arg_t *argv)
    671681{
     682#ifdef CONFIG_SYMTAB
    672683        uintptr_t symaddr;
    673684        char *symbol;
     
    677688       
    678689        symaddr = get_symbol_addr((char *) argv->buffer);
     690
    679691        if (!symaddr)
    680692                printf("Symbol %s not found.\n", argv->buffer);
     
    688700                printf("Result: %#" PRIxn "\n", fnc(arg1));
    689701        }
    690        
     702#endif
    691703        return 1;
    692704}
     
    695707int cmd_call2(cmd_arg_t *argv)
    696708{
     709#ifdef CONFIG_SYMTAB
    697710        uintptr_t symaddr;
    698711        char *symbol;
     
    714727                       arg1, arg2, symaddr, symbol);
    715728                printf("Result: %#" PRIxn "\n", fnc(arg1, arg2));
    716         }
    717        
     729        }       
     730#endif
    718731        return 1;
    719732}
     
    722735int cmd_call3(cmd_arg_t *argv)
    723736{
     737#ifdef CONFIG_SYMTAB
    724738        uintptr_t symaddr;
    725739        char *symbol;
     
    743757                printf("Result: %#" PRIxn "\n", fnc(arg1, arg2, arg3));
    744758        }
    745        
     759#endif
    746760        return 1;
    747761}
     
    798812
    799813        if (((char *)argv->buffer)[0] == '*') {
     814#ifdef CONFIG_SYMTAB
    800815                addr = (uint32_t *) get_symbol_addr((char *) argv->buffer + 1);
     816#else
     817                addr = 0;
     818#endif
    801819                pointer = true;
    802820        } else if (((char *) argv->buffer)[0] >= '0' &&
    803                    ((char *)argv->buffer)[0] <= '9')
     821                   ((char *)argv->buffer)[0] <= '9') {
    804822                addr = (uint32_t *)atoi((char *)argv->buffer);
    805         else
     823        } else {
     824#ifdef CONFIG_SYMTAB
    806825                addr = (uint32_t *)get_symbol_addr((char *) argv->buffer);
     826#else
     827                addr = 0;
     828#endif
     829        }
    807830
    808831        if (!addr)
    809832                printf("Symbol %s not found.\n", argv->buffer);
    810833        else if (addr == (uint32_t *) -1) {
     834#ifdef CONFIG_SYMTAB
    811835                symtab_print_search((char *) argv->buffer);
     836#endif
    812837                printf("Duplicate symbol, be more specific.\n");
    813838        } else {
  • kernel/generic/src/console/kconsole.c

    rd9167a1c re2b762ec  
    5151#include <func.h>
    5252#include <string.h>
    53 #include <symtab.h>
    5453#include <macros.h>
    5554#include <sysinfo/sysinfo.h>
    5655#include <ddi/device.h>
     56
     57#ifdef CONFIG_SYMTAB
     58#include <symtab.h>
     59#endif
    5760
    5861/** Simple kernel console.
     
    259262static int cmdtab_compl(char *name)
    260263{
    261         static char output[MAX_SYMBOL_NAME + 1];
     264        static char output[/*MAX_SYMBOL_NAME*/128 + 1];
    262265        link_t *startpos = NULL;
    263266        const char *foundtxt;
     
    291294                }
    292295        }
    293         strncpy(name, output, MAX_SYMBOL_NAME);
     296        strncpy(name, output, 128/*MAX_SYMBOL_NAME*/);
    294297        return found;
    295        
    296298}
    297299
     
    348350                                found = cmdtab_compl(tmp);
    349351                        } else { /* Symtab completion */
     352#ifdef CONFIG_SYMTAB
    350353                                found = symtab_compl(tmp);
     354#else
     355                                found = 0;
     356#endif
    351357                        }
    352358
     
    516522static int parse_int_arg(char *text, size_t len, unative_t *result)
    517523{
    518         static char symname[MAX_SYMBOL_NAME];
    519524        uintptr_t symaddr;
    520525        bool isaddr = false;
    521526        bool isptr = false;
     527
     528#ifdef CONFIG_SYMTAB
     529        static char symname[MAX_SYMBOL_NAME];
     530#endif
    522531       
    523532        /* If we get a name, try to find it in symbol table */
     
    532541        }
    533542        if (text[0] < '0' || text[0] > '9') {
     543#ifdef CONFIG_SYMTAB
    534544                strncpy(symname, text, min(len + 1, MAX_SYMBOL_NAME));
    535545                symaddr = get_symbol_addr(symname);
     
    543553                        return -1;
    544554                }
     555#else
     556                symaddr = 0;
     557#endif
    545558                if (isaddr)
    546559                        *result = (unative_t)symaddr;
  • kernel/generic/src/interrupt/interrupt.c

    rd9167a1c re2b762ec  
    4646#include <panic.h>
    4747#include <print.h>
     48
     49#ifdef CONFIG_SYMTAB
    4850#include <symtab.h>
     51#endif
    4952
    5053static struct {
     
    131134       
    132135        for (i = 0; i < IVT_ITEMS; i++) {
     136#ifdef CONFIG_SYMTAB
    133137                symbol = get_symtab_entry((unative_t) exc_table[i].f);
    134138                if (!symbol)
    135139                        symbol = "not found";
     140#else
     141                symbol = "n/a";
     142#endif
    136143
    137144#ifdef __32_BITS__
  • kernel/generic/src/synch/spinlock.c

    rd9167a1c re2b762ec  
    4343#include <print.h>
    4444#include <debug.h>
     45
     46#ifdef CONFIG_SYMTAB
    4547#include <symtab.h>
     48#endif
    4649
    4750#ifdef CONFIG_FB
     
    7780{
    7881        count_t i = 0;
     82        bool deadlock_reported = false;
     83#ifdef CONFIG_SYMTAB
    7984        char *symbol;
    80         bool deadlock_reported = false;
     85#endif
    8186
    8287        preemption_disable();
     
    109114                        printf("cpu%u: looping on spinlock %" PRIp ":%s, caller=%" PRIp,
    110115                                CPU->id, sl, sl->name, CALLER);
     116#ifdef CONFIG_SYMTAB
    111117                        symbol = get_symtab_entry(CALLER);
    112118                        if (symbol)
    113119                                printf("(%s)", symbol);
     120#endif
    114121                        printf("\n");
    115122                        i = 0;
Note: See TracChangeset for help on using the changeset viewer.