Changeset e2b762ec in mainline for kernel/generic/src/console/cmd.c


Ignore:
Timestamp:
2009-03-16T21:58:05Z (15 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.

File:
1 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 {
Note: See TracChangeset for help on using the changeset viewer.