view TaskManager/kernel/ppe/SymTable.cc @ 14:41ccd4b38184

*** empty log message ***
author gongo
date Fri, 08 Feb 2008 18:00:21 +0900
parents
children 31a7ff27ee20
line wrap: on
line source

#include <string.h>
#include "SymTable.h"

void
SymTable::init(void)
{
    symtb = new SymTb[SYM_MAX_SIZE];
    symtb_index = 0;
}

void
SymTable::set_symbol(const char *sym, void *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::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;
}