Ejemplo n.º 1
0
int lispd_get_iface_address_nl(
        char                *ifacename,
        lisp_addr_t         *addr,
        int                 afi)
{
    int ifa_index = if_nametoindex(ifacename);

    if (request_address(ifa_index, afi)!=GOOD){
        return (BAD);
    }
    if (read_address_nl(ifa_index, addr)!=GOOD){
    	lispd_log_msg(LISP_LOG_DEBUG_2,"lispd_get_iface_address_nl: Couldn't get iface address from afi");
    	return (BAD);
    }
    return (GOOD);
}
Ejemplo n.º 2
0
//------------------------------------------------------------------------
// int cycle_model::write_data(int addr, int data)
//
//    writes data on data memory which can be internal to the block or
//    external (case of an hardware peripheral)
//
//------------------------------------------------------------------------
int cycle_model::write_data(int addr, int data) {
  
  int result = 0;
  
  bool is_internal = request_address(addr);
  
  if(is_internal) {
    // is internal
    if((cycles2execute>0)||ALL_CYCLES) {
      for(int i=0; i<stretch_cycles+1; i++) {
	exec_bus_cycle(OP_IDLE,addr,data,&result);
      }
    }
    ext_mem[addr]=data;
  } else {
    // is external
    exec_bus_cycle(OP_MEM_WRITE,addr,data,&result);
  }

  return result;
}
Ejemplo n.º 3
0
//------------------------------------------------------------------------
// int cycle_model::fetch_data(int ad)
//
//   fetches data from memory which can be internal to the block or 
//   external (case of an hardware peripheral)
//
//------------------------------------------------------------------------
int cycle_model::fetch_data(int addr) {
  
  int data = 0, result;
  
  bool is_internal = request_address(addr);
  if(is_internal) {
    // is internal
    if((cycles2execute>0)||ALL_CYCLES) {
      // Wait 
      for(int i=0; i<stretch_cycles+1; i++) {
	exec_bus_cycle(OP_IDLE,addr,data,&result);
      }
    }
    result = ext_mem[addr];
  } else {
    // is external
    exec_bus_cycle(OP_MEM_READ,addr,data,&result);
  }
  
  return result;
}