/*
    Copyright (c) 1998--2006 Benhur Stein
    
    This file is part of Paj.

    Paj is free software; you can redistribute it and/or modify it under
    the terms of the GNU Lesser General Public License as published by the
    Free Software Foundation; either version 2 of the License, or (at your
    option) any later version.

    Paj is distributed in the hope that it will be useful, but WITHOUT ANY
    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
    for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with Paj; if not, write to the Free Software Foundation, Inc.,
	51 Franklin Street, Fifth Floor, Boston, MA 02111 USA.
*/


//////////////////////////////////////////////////
/*      Author: Geovani Ricardo Wiedenhoft      */
/*      Email: grw@inf.ufsm.br                  */
//////////////////////////////////////////////////



	Manual de utilizao

1) Para gerao e leitura de rastros de execuo, primeiramente o usurio dever instrumentar o programa com funes que podero ser criadas. Nessas funes iro ser gravados informaes relevantes ao usurio. Alm das funes existentes  possvel gerar novas de acordo com as necessidades. Por exemplo:

rst_event(u_int16_t type) -> armazena o tipo do rastro
rst_event_?...
? - pode ser:
	c - 8 bits
	w - 16 bits
	i - 32 bits
	l - 64 bits
	f - float
	d - double
	s - string

... - indica que pode ter mais elementos "?" iguais ou diferentes, no importa a ordem que aparecem
exemplo:
	rst_event_iicilf(...)
	rst_event_siicicffll(...)

2)  necessrio aps a instrumentao do programa gerar as funes que no existem na biblioteca atravs do programa:

rastro_get_names.sh -> gera as funes para o usurio automaticamente passando os arquivos que contenham as novas funes e apenas o nome do arquivo de sada.

Ex:
	#rastro_get_names.sh <arquivos do usuario .c> <arquivo de saida com as funcoes sem terminacao>
	rastro_get_names.sh rastro_write_example.c saida

Programas que so utilizados por ele:

rastro_names.sh -> Programa que pega da entrada padro o arquivo pr-compilado e busca por novas funes que no existem na biblioteca e coloca na sada padro s os nomes das novas funes.

rastro_function.sh -> Programa que recebe da entrada padro os nomes das novas funes e as gera.

ou manualmente

	#gcc -E rastro_write_example.c outroArquivo.c ...c | rastro_names.sh | rastro_function.sh

OBS: Desse modo manual ser gerado os arquivos rastro.c e rastro.h que possuem as novas funes que no existem na biblioteca.


3) Feito as tarefas anteriores sero gerados dois arquivos um .c e outro .h com as funes que no existem na biblioteca.  necessrio que seja includo o arquivo gerado .h no arquivo do usurio.


4) Prximo passo eh compilar o programa do usurio.

Ex:
	gcc -o exe rastro_write_example.c <nome do arquivo de saida>.c -I/usr/local/libRastro/include -L/usr/local/libRastro/lib -lrastro

Agora basta executar.
Ex:
	./exe

5) Para fazer a leitura dos rastros de execuo gerados  necessrio criar um programa para fazer a decodificao.


Ex:
	gcc -o dec rastro_read_example.c -I/usr/local/libRastro/include -L/usr/local/libRastro/lib -lrastro


Agora execute.
Ex:
	./dec <Arquivo timesync> <Arquivos de Rastros...>

PS:
	O Arquivo timesync pode ser null (passe um arquivo inexistente) se estiveres executando na mesma mquina.

