INSEE 05.04.2011
Interconnection Nertworks Simulation and Evaluation Environment
Functions
C:/cygwin/home/Javier/insee/src/exd.c File Reference

Execution driven simulation & Interface with Simics tools and functions. More...

#include "exd.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <linux/ip.h>
#include <linux/udp.h>
#include <linux/if_ether.h>
#include <stdio.h>
#include <assert.h>
#include <signal.h>
#include <errno.h>
#include <math.h>
#include <netdb.h>
#include <string.h>
Include dependency graph for exd.c:

Functions

void packet_dispatcher (list *list_sockets, list *list_packets)
void frame_packetizer (struct packet *pack, unsigned long FSIN_destination)
port_type generate_FSIN_packet (unsigned long src, unsigned long dst, long id_ethernet_frame)
void closing ()
void die (char *)
void get_ip_addr (struct in_addr *, char *)
void get_hw_addr (u_char *, char *)
void get_simics_fsin_stats ()
void clear_simics_fsin_stats ()
void SwapBytes (void *b1, void *b2, unsigned short len)
unsigned short csum (unsigned short *buf, int nwords)
void SIMICS_phit_away (long i, phit ph)
void thread_signal_handler (int sig)
int close_input_reading_thread (pthread_t *idHilo)
void * input_reading_thread (void *arg)
void signal_handler (int sig)
void init_exd (long fsin_cycles, long simics_cycles, long packet_size, long simics_hosts_port, long periodos)
void run_network_exd (void)
int CreateSync (char *StationAddress, int len)
int AddSync (char *StationAddress, int len, unsigned long long timestamp)

Detailed Description

Execution driven simulation & Interface with Simics tools and functions.


Function Documentation

void clear_simics_fsin_stats ( )

funcion clear_simics_fsin_stats Esta funcion limpia las estadisticas y comienza el conteo de las estadisticas This function clears FSIN stats & and starts using the simulated network for the traffic provided by SIMICS.

int close_input_reading_thread ( pthread_t *  idHilo)

funcion close_input_reading_thread Esta funcion se encarga de cerrar el thread que lee continuamente de la entrada estandar el retardo de interconexion Orden Parametros: puntero donde se encuentra el Identificador del thread a cerrar

void closing ( )

function closing. cierra sockets abiertos y borra las listas creadas, paquetes y conexiones This function closes open sockets & destroy data structures used in execution guided simulation.

void frame_packetizer ( struct packet pack,
unsigned long  FSIN_destination 
)

funcion frame_packetizer Esta funcion crea los paquetes en que se divide la trama ethernet tanto los paquetes que se guardan en struct packet como los de FSIN. Los paquetes de FSIN se convierten en phits y se inyectan en los buferes de inyeccion de los routers This function divides ethernet data frames into FSIN packets & inject them into the simulated network.

Parameters:
packA list with all the data frames within FSIN.
FSIN_destinationNode
port_type generate_FSIN_packet ( unsigned long  src,
unsigned long  dst,
long  id_ethernet_frame 
)

funcion generate_FSIN_packet Esta funcin rellena la estructura que contiene un paquete de FSIN Es analoga a generate_pkt de FSIN, pero no tiene que usar ningun tipo de distribucion para calcular el destino del paquete, porque ya viene dado por la trama ethernet. El paquete no se genera sinteticamente

void get_simics_fsin_stats ( )

funcion get_simics_fsin_stats Esta funcion acaba con el conteo de las estadisticas y saca por pantalla las estadisticas de la ejecucion This function prints the execution driven simulation stats from FSIN, & returns to direct dispatching mode.

void init_exd ( long  fsin_cycles,
long  simics_cycles,
long  packet_size,
long  simics_hosts_port,
long  periodos 
)

Funcion de inicializacion para la Simulacion conducida por la ejecucion Parametros: long fsin_cycle_relation: relacion de ciclos entre Simics y FSIN, los ciclos que correra FSIN, por defecto es 10 long simics_cycle_relation: relacion de ciclos entre Simics y FSIN, los ciclos que correra Simics, por defecto es 1000 long packet_size_in_phits: tamao en phits del paquete, un phit son 4 bytes (configurable), por defecto es 32, es pkt_len long serv_addr: puerto de escucha de nuevas conexiones de SIMICS hosts, por defecto es 8082 long num_periodos_espera: retardo de interconexion que se introducira en el hosts destino. Medido en ciclos SIMICS, por defecto es 0

void* input_reading_thread ( void *  arg)

funcion input_reading_thread esta funcion lee continuamente el parametro retardo de interconexion de la entrada estandar Orden Parametros: ninguno

void packet_dispatcher ( list list_sockets,
list list_packets 
)

Packet dispatcher function.

This function takes the traffic received from the SIMICS networtk interfaces & Esta funcion manda los paquetes recibidos y que han sido guardados en la lista de paquetes por su correspondiente socket de destino, o sea, que despacha los paquetes recibidos a su destino.

Parameters:
list_socketsa list containing the connected sockets from SIMICS.
list_packetsa list containing the data frames within FSIN.
void run_network_exd ( void  )

Run the simulation in Execution driven mode.

Main function for execution driven simulation using SIMICS.

void signal_handler ( int  sig)

funcion signal_handler esta funcion se encarga de atender las seales recibidas y de comunicar que se debe acabar el thread de lectura de la entrada estandar Orden Parametros: la seal recibida

void SIMICS_phit_away ( long  i,
phit  ph 
)

funcion generate_FSIN_phits Esta funcion es identica a generate_phits. Lo unico que cambia son los parametros de id_ethernet_frame e id_packet_sequence que sirven para calcular el nuevo campo del phit id_trama que esta explicado en la estructura del phit en phit.h Funcion que comprueba si ha llegado un paquete y una trama depues de que haya llegado un phit a su destino en FSIN Los parametros son el nodo al que ha llegado el phit y el phit en cuestion

void thread_signal_handler ( int  sig)

Signal handler.

Parameters:
sigThe SIGNAL id.