Changeset e2b762ec in mainline for kernel/generic/src
- Timestamp:
- 2009-03-16T21:58:05Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f36c061
- Parents:
- d9167a1c
- Location:
- kernel/generic/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/console/cmd.c
rd9167a1c re2b762ec 54 54 #include <macros.h> 55 55 #include <debug.h> 56 #include <symtab.h>57 56 #include <cpu.h> 58 57 #include <mm/tlb.h> … … 67 66 #include <ipc/irq.h> 68 67 68 #ifdef CONFIG_SYMTAB 69 #include <symtab.h> 70 #endif 71 69 72 #ifdef CONFIG_TEST 70 73 #include <test.h> … … 168 171 }; 169 172 173 #ifdef CONFIG_SYMTAB 170 174 /* Data and methods for 'symaddr' command. */ 171 175 static int cmd_symaddr(cmd_arg_t *argv); … … 183 187 .argv = &symaddr_argv 184 188 }; 189 #endif 185 190 186 191 static char set_buf[MAX_CMDLINE+1]; … … 459 464 &set4_info, 460 465 &slabs_info, 466 #ifdef CONFIG_SYMTAB 461 467 &symaddr_info, 468 #endif 462 469 &sched_info, 463 470 &threads_info, … … 606 613 } 607 614 615 #ifdef CONFIG_SYMTAB 616 608 617 /** Search symbol table */ 609 618 int cmd_symaddr(cmd_arg_t *argv) … … 614 623 } 615 624 625 #endif 626 616 627 /** Call function with zero parameters */ 617 628 int cmd_call0(cmd_arg_t *argv) 618 629 { 630 #ifdef CONFIG_SYMTAB 619 631 uintptr_t symaddr; 620 char *symbol;621 632 unative_t (*fnc)(void); 622 633 fncptr_t fptr; 623 634 624 635 symaddr = get_symbol_addr((char *) argv->buffer); 625 636 if (!symaddr) … … 629 640 printf("Duplicate symbol, be more specific.\n"); 630 641 } else { 631 symbol = get_symtab_entry(symaddr);632 642 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); 634 644 printf("Result: %#" PRIxn "\n", fnc()); 635 645 } 636 646 #endif 637 647 return 1; 638 648 } … … 670 680 int cmd_call1(cmd_arg_t *argv) 671 681 { 682 #ifdef CONFIG_SYMTAB 672 683 uintptr_t symaddr; 673 684 char *symbol; … … 677 688 678 689 symaddr = get_symbol_addr((char *) argv->buffer); 690 679 691 if (!symaddr) 680 692 printf("Symbol %s not found.\n", argv->buffer); … … 688 700 printf("Result: %#" PRIxn "\n", fnc(arg1)); 689 701 } 690 702 #endif 691 703 return 1; 692 704 } … … 695 707 int cmd_call2(cmd_arg_t *argv) 696 708 { 709 #ifdef CONFIG_SYMTAB 697 710 uintptr_t symaddr; 698 711 char *symbol; … … 714 727 arg1, arg2, symaddr, symbol); 715 728 printf("Result: %#" PRIxn "\n", fnc(arg1, arg2)); 716 } 717 729 } 730 #endif 718 731 return 1; 719 732 } … … 722 735 int cmd_call3(cmd_arg_t *argv) 723 736 { 737 #ifdef CONFIG_SYMTAB 724 738 uintptr_t symaddr; 725 739 char *symbol; … … 743 757 printf("Result: %#" PRIxn "\n", fnc(arg1, arg2, arg3)); 744 758 } 745 759 #endif 746 760 return 1; 747 761 } … … 798 812 799 813 if (((char *)argv->buffer)[0] == '*') { 814 #ifdef CONFIG_SYMTAB 800 815 addr = (uint32_t *) get_symbol_addr((char *) argv->buffer + 1); 816 #else 817 addr = 0; 818 #endif 801 819 pointer = true; 802 820 } else if (((char *) argv->buffer)[0] >= '0' && 803 ((char *)argv->buffer)[0] <= '9') 821 ((char *)argv->buffer)[0] <= '9') { 804 822 addr = (uint32_t *)atoi((char *)argv->buffer); 805 else 823 } else { 824 #ifdef CONFIG_SYMTAB 806 825 addr = (uint32_t *)get_symbol_addr((char *) argv->buffer); 826 #else 827 addr = 0; 828 #endif 829 } 807 830 808 831 if (!addr) 809 832 printf("Symbol %s not found.\n", argv->buffer); 810 833 else if (addr == (uint32_t *) -1) { 834 #ifdef CONFIG_SYMTAB 811 835 symtab_print_search((char *) argv->buffer); 836 #endif 812 837 printf("Duplicate symbol, be more specific.\n"); 813 838 } else { -
kernel/generic/src/console/kconsole.c
rd9167a1c re2b762ec 51 51 #include <func.h> 52 52 #include <string.h> 53 #include <symtab.h>54 53 #include <macros.h> 55 54 #include <sysinfo/sysinfo.h> 56 55 #include <ddi/device.h> 56 57 #ifdef CONFIG_SYMTAB 58 #include <symtab.h> 59 #endif 57 60 58 61 /** Simple kernel console. … … 259 262 static int cmdtab_compl(char *name) 260 263 { 261 static char output[ MAX_SYMBOL_NAME+ 1];264 static char output[/*MAX_SYMBOL_NAME*/128 + 1]; 262 265 link_t *startpos = NULL; 263 266 const char *foundtxt; … … 291 294 } 292 295 } 293 strncpy(name, output, MAX_SYMBOL_NAME);296 strncpy(name, output, 128/*MAX_SYMBOL_NAME*/); 294 297 return found; 295 296 298 } 297 299 … … 348 350 found = cmdtab_compl(tmp); 349 351 } else { /* Symtab completion */ 352 #ifdef CONFIG_SYMTAB 350 353 found = symtab_compl(tmp); 354 #else 355 found = 0; 356 #endif 351 357 } 352 358 … … 516 522 static int parse_int_arg(char *text, size_t len, unative_t *result) 517 523 { 518 static char symname[MAX_SYMBOL_NAME];519 524 uintptr_t symaddr; 520 525 bool isaddr = false; 521 526 bool isptr = false; 527 528 #ifdef CONFIG_SYMTAB 529 static char symname[MAX_SYMBOL_NAME]; 530 #endif 522 531 523 532 /* If we get a name, try to find it in symbol table */ … … 532 541 } 533 542 if (text[0] < '0' || text[0] > '9') { 543 #ifdef CONFIG_SYMTAB 534 544 strncpy(symname, text, min(len + 1, MAX_SYMBOL_NAME)); 535 545 symaddr = get_symbol_addr(symname); … … 543 553 return -1; 544 554 } 555 #else 556 symaddr = 0; 557 #endif 545 558 if (isaddr) 546 559 *result = (unative_t)symaddr; -
kernel/generic/src/interrupt/interrupt.c
rd9167a1c re2b762ec 46 46 #include <panic.h> 47 47 #include <print.h> 48 49 #ifdef CONFIG_SYMTAB 48 50 #include <symtab.h> 51 #endif 49 52 50 53 static struct { … … 131 134 132 135 for (i = 0; i < IVT_ITEMS; i++) { 136 #ifdef CONFIG_SYMTAB 133 137 symbol = get_symtab_entry((unative_t) exc_table[i].f); 134 138 if (!symbol) 135 139 symbol = "not found"; 140 #else 141 symbol = "n/a"; 142 #endif 136 143 137 144 #ifdef __32_BITS__ -
kernel/generic/src/synch/spinlock.c
rd9167a1c re2b762ec 43 43 #include <print.h> 44 44 #include <debug.h> 45 46 #ifdef CONFIG_SYMTAB 45 47 #include <symtab.h> 48 #endif 46 49 47 50 #ifdef CONFIG_FB … … 77 80 { 78 81 count_t i = 0; 82 bool deadlock_reported = false; 83 #ifdef CONFIG_SYMTAB 79 84 char *symbol; 80 bool deadlock_reported = false; 85 #endif 81 86 82 87 preemption_disable(); … … 109 114 printf("cpu%u: looping on spinlock %" PRIp ":%s, caller=%" PRIp, 110 115 CPU->id, sl, sl->name, CALLER); 116 #ifdef CONFIG_SYMTAB 111 117 symbol = get_symtab_entry(CALLER); 112 118 if (symbol) 113 119 printf("(%s)", symbol); 120 #endif 114 121 printf("\n"); 115 122 i = 0;
Note:
See TracChangeset
for help on using the changeset viewer.