Mercurial > hg > Members > kono > Cerium
view TaskManager/kernel/ppe/SymTable.cc @ 364:87462f8d3761
uint32 to memaddr(uint64)
author | tkaito@localhost.localdomain |
---|---|
date | Fri, 24 Jul 2009 17:40:53 +0900 |
parents | 3e331f7576a1 |
children |
line wrap: on
line source
#include <string.h> #include "SymTable.h" SymTable::~SymTable(void) { SymTbPtr tb; for (int i = 0; i < symtb_index; i++) { tb = &symtb[i]; delete [] tb->sym; } delete [] symtb; } void SymTable::init(void) { symtb = new SymTb[SYM_MAX_SIZE]; symtb_index = 0; } void SymTable::set_symbol(const char *sym, FuncObject addr) { SymTbPtr tb = &symtb[symtb_index++]; tb->sym = new char[strlen(sym)+1]; memcpy(tb->sym, sym, strlen(sym)+1); tb->address = addr; } void SymTable::set_func(int id, FuncObject addr) { SymTbPtr tb = &symtb[id]; tb->address = addr; } SymTable::FuncObject SymTable::get_address(int fd) { if (fd >= symtb_index) { // Fix me // error process } return symtb[fd].address; } int SymTable::get_fd(const char *sym) { SymTbPtr tb; for (int i = 0; i < SYM_MAX_SIZE; i++) { tb = &symtb[i]; if (strcmp(tb->sym, sym) == 0) { return i; } } return -1; }