Skip to content
Snippets Groups Projects
Commit b3a6273e authored by Flora Dziedzic's avatar Flora Dziedzic
Browse files

Nouveau tracepoint dans Ptask généré dans Plu_wait() et Plu_post() (qui ne...

Nouveau tracepoint dans Ptask généré dans Plu_wait() et Plu_post() (qui ne font qu'encapsuler les fonctions sem_wait() et sem_post() et générer ce tracepoint), ce tracepoint permet de récupérer les noms des tâches utilisant les sémaphores afin d'avoir leurs dépendences, la date d'exécution et les ID.

Le tracer récupère ce tracepoint et le traite différemment des autres (puisque les champs sont différents)
	Le parser est bien sûr complété
	Dans la classe ptask_tracepoint, deux paramètres sont ajoutés pour stocker les noms des tâches impliquées.
	Lors de la création des tasks dans task_service, puisque tous les champs ne sont pas renseignés, on ne peut pas ajouter de tâche comme pour les autres tracepoints. Une liste de plu_tasks est créée puisqu'ajouter les nouveaux tracepoints à la liste task fausse le calcul du nombre de tâches (ligne 57)
	Pour la partie "set_event()", on teste en premier les tracepoints de type "plu_wait" ou "plu_post" (le test sur le flag NOW est passé en else if puisqu'un test sur le flag des tracepoint plu_X génère une erreur : le flag n'est pas transmis par le tracepoint). Il faut faire le lien entre les tâches appelant plu_Wait et plu_Post. Pour cela, à chaque appel de plu_Wait, on stocke la dépendence entre la tâche X et la tâche Y. On stocke également l'ID de la tâche X, qui sera réutilisé lors de la création d'un nouvel "event". Pour le tracepoint plu_post, il faut générer l'event contenant la date d'émission et les ID des tâches X et Y. L'ID de la tâche Y est dans le tracepoint. Celui de X est stocké dans la structure, grâce à laquelle on accède à l'ID de la tâche via son nom.

A finir :
	Il faudra finir l'association de l'ID des tâches avec leurs noms, afin de créer l'event associé. On pourra ainsi traiter la donnée en la traçant sur le fichier svg.
parent a3e12700
No related branches found
No related tags found
No related merge requests found
Showing with 213 additions and 25 deletions
......@@ -270,7 +270,7 @@ if [[ -z "$OLD" ]]; then
echo "lttng enable-event error: tracepoint sched_switch not enabled"
exit 1
fi
sudo lttng enable-event --userspace ptask_provider:ptask_tracepoint
sudo lttng enable-event --userspace ptask_provider:*
if [ $? -eq 1 ]; then
echo "lttng enable-event error: tracepoint ptask not enabled"
exit 1
......
......@@ -18,6 +18,8 @@ public class ptask_tracepoint extends userspace_tracepoint {
protected Integer period = null;
protected Integer deadline = null;
protected Long actualat = null;
protected String task_name = null;
protected String prec_name = null;
public ptask_tracepoint(time_trace time, Integer cpu_id, Integer pid, Integer tid, String flag, String state, Integer idx, String tim, Integer prio, Integer peri, Integer dd, String at) {
BigInteger bigInt = new BigInteger(tim);
......@@ -35,11 +37,30 @@ public class ptask_tracepoint extends userspace_tracepoint {
this.deadline = dd;
this.actualat= Long.parseLong(at);
}
public ptask_tracepoint(time_trace time, Integer tid,Integer idx,String state,String tim, String task_name, String prec_name){
BigInteger bigInt = new BigInteger(tim);
this.tid = tid;
this.time = time;
this.index = idx;
this.state = state;
if(bigInt.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0) this.times = Long.valueOf(tim);
this.task_name=task_name;
this.prec_name=prec_name;
}
public String getFlag() {
return this.flag;
}
public String getTaskName() {
return this.task_name;
}
public String getPrecName() {
return this.prec_name;
}
public String getState() {
return this.state;
}
......
/****************************************************************************
* Class: main() *
* Parameters: NA *
* Autor: ael-mess *
* Description: creates services to manage parser, tasks, and printer *
****************************************************************************/
package com;
import com.parser.*;
import com.event.*;
import com.task.*;
import com.printer.*;
import java.io.IOException;
import java.lang.IllegalArgumentException;
public class main {
public static void main(String[] args) throws IOException {
if(args.length == 7) {
System.out.println("coucou main.kava");
parser_service parser = new parser_service(args[6]+"/build/"+args[0]+"_raw.txt");
System.out.println("[\u001B[32mOK\u001B[0m]");
System.out.println("\n> Analysing the data...");
task_service tasks = new task_service(parser.getTraces(), args);
System.out.println("[\u001B[32mOK\u001B[0m]");
System.out.println("\n> Generating the SVG...");
printer_service printer = new printer_service(tasks, args[6]+"/build/"+args[0]+".svg", args);
System.out.println("[\u001B[32mOK\u001B[0m]");
//System.out.println(parser.description());
//System.out.println(tasks.description());
}
else throw new IllegalArgumentException("Bad arguments or number of arguments");
}
}
/****************************************************************************
* Class: parser_service() *
* Parameters: trace file name of the trace *
* Autor: ael-mess *
* Description: import traces from file to this java list (of trace objt) *
****************************************************************************/
package com.parser;
import com.parser.java.*;
import com.event.*;
import org.antlr.v4.runtime.*;
import java.util.ArrayList;
import java.util.List;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.lang.NullPointerException;
import java.lang.OutOfMemoryError;
public class parser_service {
protected List<trace> traces = new ArrayList<>();
protected String file_name = null;
public parser_service(String file_name) throws IOException, OutOfMemoryError {
try {
CharStream in = CharStreams.fromFileName(file_name);
traceLexer lexer = new traceLexer(in);
CommonTokenStream tokens = new CommonTokenStream(lexer);
traceParser parser = new traceParser(tokens);
this.traces = parser.start().traces;
System.out.println(""+this.traces.size()+" events saved in the trace");
if(this.traces==null) throw new NullPointerException("Traces List null pointer");
} catch (IOException e) {
throw new FileNotFoundException("Trace file "+file_name+" not found");
} catch (OutOfMemoryError e) {
System.err.println("Exception in thread \"main\" java.lang.OutOfMemoryError: Java heap space: failed reallocation (too many events in the trace file)\n at com.parser.parser_service.<init>(parser_service.java:38)\n at com.main.main(main.java:21)");
System.exit(2);
}
}
public List<trace> getTraces() {
return this.traces;
}
public String description() {
String ret = "";
for(trace tr : this.traces) ret += tr.description()+"\n";
return ret;
}
}
......@@ -16,6 +16,7 @@ RCBRA : '}';
QUOT : '"';
PTASK_TRACEPOINT : 'ptask_provider:ptask_tracepoint';
PTASK_TRACEPOINT_PLU : 'ptask_provider:ptask_tracepoint_plu';
SCHED_SWITCH : 'sched_switch';
EXIT_CLONE : 'syscall_exit_clone';
ENTRY_CLONE : 'syscall_entry_clone';
......@@ -45,10 +46,13 @@ PTASK_PRIORITY : 'ptask_priority';
PTASK_PERIOD : 'ptask_period';
PTASK_DEADLINE : 'ptask_deadline';
PTASK_OFFSET : 'ptask_offset';
PTASK_LASTAT : 'ptask_actual_at';
PTASK_AT : 'ptask_actual_at';
PTASK_NAME : 'task_name';
PREC_NAME : 'prec_name';
PTASK_STATE : QUOT('b_wait_period'|'e_wait_period'|'b_wait_activation'|'e_wait_activation'|'creation'|'activation')QUOT;
PTASK_STATE : QUOT('b_wait_period'|'e_wait_period'|'b_wait_activation'|'e_wait_activation'|'creation'|'activation'|'plu_wait'|'plu_post')QUOT;
PTASK_FLAG : QUOT('DEFERRED'|'NOW')QUOT;
TASKNAME : QUOT[a-zA-Z0-9]+QUOT;
DELTA : ([0-9]'.'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])|'?.?????????';
INT : [0-9]+;
......@@ -56,5 +60,4 @@ SINT : '-'[0-9]+;
HEX : '0x'[0-9A-F]+;
ID : QUOT[A-Za-z0-9/:.)(~ _-]+QUOT;
HOSTNAME : [A-Za-z0-9-]+;
WS : [ \t\r\n]+ -> skip;
......@@ -45,9 +45,9 @@ PTASK_PRIORITY : 'ptask_priority';
PTASK_PERIOD : 'ptask_period';
PTASK_DEADLINE : 'ptask_deadline';
PTASK_OFFSET : 'ptask_offset';
PTASK_LASTAT : 'ptask_lastat';
PTASK_AT : 'ptask_actual_at';
PTASK_STATE : QUOT('b_wait_period'|'e_wait_period'|'b_wait_activation'|'e_wait_activation'|'creation'|'activation')QUOT;
PTASK_STATE : QUOT('b_wait_period'|'e_wait_period'|'b_wait_activation'|'e_wait_activation'|'creation'|'activation'|'plu_wait'|'plu_post')QUOT;
PTASK_FLAG : QUOT('DEFERRED'|'NOW')QUOT;
DELTA : ([0-9]'.'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])|'?.?????????';
......
......@@ -21,9 +21,13 @@ trace returns [ trace tr ] :
{ $tr = new sched_switch($timestamp.t,$header.cpu_id,$context.cntx.get(0),$context.cntx.get(1),$prev_comm.text,$next_comm.text,$prev_tid.int,$next_tid.int,$prev_prio.text,$next_prio.text,$prev_state.int); }
| timestamp HOSTNAME PTASK_TRACEPOINT COL LCBRA header RCBRA COM LCBRA PTASK_PID EQ pid=INT COM PTASK_TID EQ tid=INT COM PTASK_INDEX EQ ptask_index=INT COM PTASK_FLAG_F EQ ptask_flag=PTASK_FLAG COM PTASK_STATE_F EQ ptask_state=PTASK_STATE COM PTASK_TIME EQ times=INT COM PTASK_PRIORITY EQ ptask_prio=INT COM PTASK_PERIOD EQ ptask_peri=INT COM PTASK_DEADLINE EQ ptask_dead=INT COM PTASK_LASTAT EQ ptask_actual_at=sint RCBRA
| timestamp HOSTNAME PTASK_TRACEPOINT COL LCBRA header RCBRA COM LCBRA PTASK_PID EQ pid=INT COM PTASK_TID EQ tid=INT COM PTASK_INDEX EQ ptask_index=INT COM PTASK_FLAG_F EQ ptask_flag=PTASK_FLAG COM PTASK_STATE_F EQ ptask_state=PTASK_STATE COM PTASK_TIME EQ times=INT COM PTASK_PRIORITY EQ ptask_prio=INT COM PTASK_PERIOD EQ ptask_peri=INT COM PTASK_DEADLINE EQ ptask_dead=INT COM PTASK_AT EQ ptask_actual_at=sint RCBRA
{ $tr = new ptask_tracepoint($timestamp.t,$header.cpu_id,$pid.int,$tid.int,$ptask_flag.text,$ptask_state.text,$ptask_index.int,$times.text,$ptask_prio.int,$ptask_peri.int,$ptask_dead.int,$ptask_actual_at.text); }
| timestamp HOSTNAME PTASK_TRACEPOINT_PLU COL LCBRA header RCBRA COM LCBRA PTASK_TID EQ tid=INT COM PTASK_INDEX EQ ptask_index=INT COM PTASK_STATE_F EQ ptask_state=PTASK_STATE COM PTASK_TIME EQ times=INT COM PTASK_NAME EQ task_name=TASKNAME COM PREC_NAME EQ prec_name=TASKNAME RCBRA
{ $tr = new ptask_tracepoint($timestamp.t,$ptask_index.int,$tid.int,$ptask_state.text,$times.text,$task_name.text,$prec_name.text); }
;
......
......@@ -21,9 +21,9 @@ trace returns [ trace tr ] :
{ $tr = new sched_switch($timestamp.t,$header.cpu_id,$context.cntx.get(0),$context.cntx.get(1),$prev_comm.text,$next_comm.text,$prev_tid.int,$next_tid.int,$prev_prio.text,$next_prio.text,$prev_state.int); }
| timestamp HOSTNAME PTASK_TRACEPOINT COL LCBRA header RCBRA COM LCBRA PTASK_PID EQ pid=INT COM PTASK_TID EQ tid=INT COM PTASK_INDEX EQ ptask_index=INT COM PTASK_FLAG_F EQ ptask_flag=PTASK_FLAG COM PTASK_STATE_F EQ ptask_state=PTASK_STATE COM PTASK_TIME EQ times=INT COM PTASK_PRIORITY EQ ptask_prio=INT COM PTASK_PERIOD EQ ptask_peri=INT COM PTASK_DEADLINE EQ ptask_dead=INT COM PTASK_LASTAT EQ ptask_lastat=sint RCBRA
| timestamp HOSTNAME PTASK_TRACEPOINT COL LCBRA header RCBRA COM LCBRA PTASK_PID EQ pid=INT COM PTASK_TID EQ tid=INT COM PTASK_INDEX EQ ptask_index=INT COM PTASK_FLAG_F EQ ptask_flag=PTASK_FLAG COM PTASK_STATE_F EQ ptask_state=PTASK_STATE COM PTASK_TIME EQ times=INT COM PTASK_PRIORITY EQ ptask_prio=INT COM PTASK_PERIOD EQ ptask_peri=INT COM PTASK_DEADLINE EQ ptask_dead=INT COM PTASK_LASTAT EQ ptask_actual_at=sint RCBRA
{ $tr = new ptask_tracepoint($timestamp.t,$header.cpu_id,$pid.int,$tid.int,$ptask_flag.text,$ptask_state.text,$ptask_index.int,$times.text,$ptask_prio.int,$ptask_peri.int,$ptask_dead.int,$ptask_lastat.text); }
{ $tr = new ptask_tracepoint($timestamp.t,$header.cpu_id,$pid.int,$tid.int,$ptask_flag.text,$ptask_state.text,$ptask_index.int,$times.text,$ptask_prio.int,$ptask_peri.int,$ptask_dead.int,$ptask_actual_at.text); }
;
......
......@@ -31,6 +31,7 @@ public class printer_service {
System.out.println("SVG file generated in build/");
this.Externset(Double.valueOf(args[2]), Double.valueOf(args[3]), Boolean.valueOf(args[4]), Boolean.valueOf(args[5]));
this.svg.setCanvas();
System.out.println("Canvas set");
......
......@@ -40,6 +40,7 @@ public class svggen {
protected Double scale = 1000.0;
protected Double task_hei = 20.0;
protected List<task> tasks = null;
protected List<task> plu_tasks = null;
protected List<app> os = null;
protected List<Integer> cpu = null;
protected Writer out = null;
......@@ -59,6 +60,7 @@ public class svggen {
this.f = new form((Graphics2D)this.svgGenerator);
this.tasks = serv.getTasks();
this.plu_tasks = serv.getPluTasks();
this.main = serv.getMain_task();
this.os = serv.getOs_task();
this.cpu = serv.getCpu();
......
......@@ -215,7 +215,9 @@ public class svggen {
boolean testaperiodic = !t.isPeriodic() && t_e.getType().equals(Types.START);
boolean testperiodic = t.isPeriodic() && t_e.getType().equals(Types.FINISH);
if ( (testperiodic || testaperiodic) && deadline!=0)
{
{ System.out.println("deadline");
System.out.println(deadline);
System.out.println(t_e.getActualat());
this.f.wakeLine((t_e.getActualat()/1000000.0)*this.scale, (1+this.curH)*this.task_hei, this.curH*this.task_hei);
this.f.deadLine( ((t_e.getActualat()+deadline)/1000000.0)*this.scale, (1+this.curH)*this.task_hei, this.curH*this.task_hei);
}
......
Nouveau tracepoint défini dans le header tpt_provider.h dans Ptask :
void tpoint_plu (char* state,char* task_name, char* src_name){
struct timespec now;
clock_gettime(CLOCK_REALTIME, &now);
tracepoint(ptask_provider, ptask_tracepoint_plu, _tp[ptask_idx].tid, ptask_idx,state, tspec_to_rel(&now, MILLI),task_name, src_name);
}
généré dans Plu_wait() et Plu_post() (qui ne font qu'encapsuler les fonctions sem_wait() et sem-post() et générer ce tracepoint), ce tracepoint permet de récupérer les noms des tâches utilisant les sémaphores afin d'avoir leurs dépendences, la date d'exécution et les ID.
Le tracer récupère ce tracepoint et le traite différemment des autres (puisque les champs sont différents)
Dans la classe ptask_tracepoint, deux paramètres sont ajoutés pour stocker les noms des tâches impliquées.
Lors de la création des tasks dans task_service, puisque tous les champs ne sont pas renseignés, on ne peut pas ajouter de tâche comme pour les autres tracepoints. Une liste de plu_tasks est créée puisqu'ajouter les nouveaux tracepoints à la liste task fausse le calcul du nombre de tâches (ligne 57)
Pour la partie "set_event()", on teste en premier les tracepoints de type "plu_wait" ou "plu_post" (le test sur le flag NOW est passé en else if puisqu'un test sur le flag des tracepoint plu_X génère une erreur : le flag n'est pas transmis par le tracepoint). Il faut faire le lien entre les tâches appelant plu_Wait et plu_Post. Pour cela, à chaque appel de plu_Wait, on stocke la dépendence entre la tâche X et la tâche Y. On stocke également l'ID de la tâche X, qui sera réutilisé lors de la création d'un nouvel "event". Pour le tracepoint plu_post, il faut générer l'event contenant la date d'émission et les ID des tâches X et Y. L'ID de la tâche Y est dans le tracepoint. Celui de X est stocké dans la structure, grâce à laquelle on accède à l'ID de la tâche via son nom.
A finir :
Il faudra finir l'association de l'ID des tâches avec leurs noms, afin de créer l'event associé. On pourra ainsi traiter la donnée en la traçant sur le fichier svg.
\ No newline at end of file
package com.task;
public enum Types { START, FINISH, SWITCH_IN, SWITCH_OUT, ACTIVATION; }
public enum Types { START, FINISH, SWITCH_IN, SWITCH_OUT, ACTIVATION, PREC; }
......@@ -12,10 +12,12 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import java.awt.Color;
import java.util.*;
import java.lang.NullPointerException;
public class task_service {
protected List<task> plu_tasks = null;
protected List<task> tasks = null;
protected List<trace> traces = null;
protected List<Integer> cpu = null;
......@@ -23,13 +25,18 @@ public class task_service {
protected app main_task = null;
protected List<app> os = null;
protected Double end = 0.0;
protected Map<String,ArrayList<String>> precedences = null;
protected Map<String,Integer>annuaire = null;
public task_service(List<trace> traces, String[] args) throws NullPointerException {
try {
this.traces = traces;
this.tasks = new ArrayList<>();
this.plu_tasks = new ArrayList<>();
this.cpu = new ArrayList<>();
this.tids = new ArrayList<>();
this.precedences = new HashMap<>();
this.annuaire = new HashMap<>();
for(trace tr : this.traces) {
if(!cpu.contains(tr.getCpu_id())) this.cpu.add(tr.getCpu_id());
if(tr instanceof ptask_tracepoint && !tids.contains(tr.getTid())) tids.add(tr.getTid());
......@@ -44,9 +51,11 @@ public class task_service {
System.out.println("Tracing start from "+this.os.get(0).getStart()+" to "+this.end+" ("+(this.end-this.os.get(0).getStart())+"s)");
List<Integer> tmp = new ArrayList<>(tids);
for(trace tr : this.traces) if(tr instanceof ptask_tracepoint && tmp.remove(tr.getTid()))this.setTask(tr);
tmp = null;
System.out.println(""+this.tasks.size()+" tasks imported :");
for(task t : this.tasks) System.out.println(t.getInfo());
if(this.tasks.size()==0) throw new NullPointerException("No tasks detected");
......@@ -99,6 +108,13 @@ public class task_service {
// setting the tasks threads in this list
private void setTask(trace tr) throws NullPointerException {
task t = new task();
System.out.println(((ptask_tracepoint)tr).getState());
if (((((ptask_tracepoint)tr).getState()).compareTo("\"plu_wait\""))==0 || ((((ptask_tracepoint)tr).getState()).compareTo("\"plu_post\""))==0){
this.plu_tasks.add(t);
t.setId(tr.getTid());
t.setName(((ptask_tracepoint) tr).getIndex());
}
else{
this.tasks.add(t);
t.setId(tr.getTid());
t.setCpu_id(tr.getCpu_id());
......@@ -107,7 +123,9 @@ public class task_service {
t.setDeadline(((ptask_tracepoint) tr).getDeadline());
t.setActualat(((ptask_tracepoint) tr).getActualat());
t.setColor();
}
this.setEvents(t);
}
public List<Integer> getCpu() {
......@@ -122,6 +140,9 @@ public class task_service {
return this.tasks;
}
public List<task> getPluTasks() {
return this.plu_tasks;
}
public app getMain_task() {
return this.main_task;
}
......@@ -157,7 +178,27 @@ public class task_service {
idx = i;
}
else if(tr instanceof ptask_tracepoint) {
if(((ptask_tracepoint) tr).getFlag().equals("\"NOW\"")) {
if(((ptask_tracepoint) tr).getState().equals("\"plu_wait\"")) {
//Stockage des liens de précédence entre les différentes tâches (pour chaque tâche on stocke les tâches qu'elle attend)
String taskname = ((ptask_tracepoint) tr).getTaskName();
String precname = ((ptask_tracepoint) tr).getPrecName();
if (precedences.get(taskname)==null) {
precedences.put(taskname, new ArrayList<String>());
}
precedences.get(taskname).add(precname);
//Stockage des id correspondant aux noms des tâches
Integer index = ((ptask_tracepoint) tr).getIndex();
//if (!(annuaire.get(taskname)).contains(index)) annuaire.get(taskname).add(index);
System.out.println("plu_wait");
}
else if(((ptask_tracepoint) tr).getState().equals("\"plu_post\"")) {
Integer id_dst = annuaire.get(((ptask_tracepoint) tr).getPrecName());
//events.add(Types.PREC, ((ptask_tracepoint) tr).getIndex() , id_dst, t.getStart()); méthode add à compléter dans la classe event
System.out.println("plu_post");
}
else if(((ptask_tracepoint) tr).getFlag().equals("\"NOW\"")) {
t.setState(true);
if(once && t.getStart()!=null) events.add(idx, new t_event(Types.START, t.getStart()));
if(once) period = 0.0;
......@@ -167,7 +208,7 @@ public class task_service {
if(t.isActivated()) {
if( ((ptask_tracepoint) tr).getState().equals("\"b_wait_period\"")) {
if(t.getStart() != null) events.add(new t_event(((ptask_tracepoint)tr).getActualat(),Types.FINISH, tr.getTime().getTime("seconde"), (tr.getTime().getTime("seconde")-t.getStart())<((((ptask_tracepoint)tr).getActualat()+t.getDeadline())/1000000.0)));
if(t.getStart() != null) events.add(new t_event(((ptask_tracepoint)tr).getActualat(),Types.FINISH, tr.getTime().getTime("seconde"), (tr.getTime().getTime("seconde")-t.getStart())<((period+t.getDeadline())/1000000.0)));
else events.add(new t_event(((ptask_tracepoint)tr).getActualat(), Types.FINISH, tr.getTime().getTime("seconde")));
t.setPeriodic(true);
}
......@@ -177,7 +218,7 @@ public class task_service {
t.setPeriodic(true);
}
else if(((ptask_tracepoint) tr).getState().equals("\"b_wait_activation\"")) {
if(t.getStart() != null) events.add(new t_event(Types.FINISH, tr.getTime().getTime("seconde"), (tr.getTime().getTime("seconde")-defwake)<(((ptask_tracepoint)tr).getActualat()+t.getDeadline())/1000000.0));
if(t.getStart() != null) events.add(new t_event(Types.FINISH, tr.getTime().getTime("seconde"), (tr.getTime().getTime("seconde")-defwake)<(period+t.getDeadline())/1000000.0));
else events.add(new t_event( Types.FINISH, tr.getTime().getTime("seconde")));
t.setState(false);
}
......@@ -212,6 +253,7 @@ public class task_service {
i++;
}
}
t.setEvents(events);
}
......
......@@ -167,6 +167,12 @@ public class task_service {
if(t.isActivated()) {
if( ((ptask_tracepoint) tr).getState().equals("\"b_wait_period\"")) {
System.out.println(tr.getTime().getTime("seconde")-t.getStart());
//System.out.println(t.getStart());
System.out.println(((ptask_tracepoint) tr).getActualat()/1000000.0);
System.out.println((t.getDeadline())/1000000.0);
System.out.println(period/1000000.0);
System.out.println("");
if(t.getStart() != null) events.add(new t_event(((ptask_tracepoint)tr).getActualat(),Types.FINISH, tr.getTime().getTime("seconde"), (tr.getTime().getTime("seconde")-t.getStart())<((period+t.getDeadline())/1000000.0)));
else events.add(new t_event(((ptask_tracepoint)tr).getActualat(), Types.FINISH, tr.getTime().getTime("seconde")));
t.setPeriodic(true);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment