Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1270 → Rev 1271

/demos/trunk/loader/generators/java/fsf-schema.xsd
45,7 → 45,7
<xs:sequence>
<xs:element name="number" type="xs:integer"/>
<xs:element name="dline" type="xs:string" minOccurs="0" />
<xs:element name="wcet" type="xs:string"/>
<xs:element name="wcet" type="xs:string" minOccurs="0"/>
<xs:element ref="act_section"/>
<xs:element ref="exec_section"/>
</xs:sequence>
60,7 → 60,6
<xs:element name="period_time" type="xs:string" minOccurs="0" />
<xs:element name="delta_time" type="xs:string" minOccurs="0" />
</xs:sequence>
<xs:attribute name="type" type="xs:string" use='required'/>
</xs:complexType>
</xs:element>
 
70,7 → 69,6
<xs:element name="exec_time" type="xs:string"/>
<xs:element name="delta_time" type="xs:string" minOccurs="0" />
</xs:sequence>
<xs:attribute name="type" type="xs:string" use='required'/>
</xs:complexType>
</xs:element>
 
/demos/trunk/loader/generators/java/makefile
9,4 → 9,5
 
clean:
rm -f *.class
rm -f event.c
 
/demos/trunk/loader/generators/java/Applicazione.java
9,7 → 9,7
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import java.util.regex.*;
import java.util.random;
import java.util.Random;
 
/**
* <p>Title: First XML filter</p>
145,9 → 145,9
"," + tsk_sec.localscheduler + "," + tsk_sec.number + ","
+ tsk_sec.group + ",{" + tsk_sec.deadline.tv_sec +
"," +
tsk_sec.deadline.tv_nsec * 1000 + "}," + "{" +
tsk_sec.deadline.tv_nsec + "}," + "{" +
tsk_sec.wcet.tv_sec + "," +
tsk_sec.wcet.tv_nsec * 1000 + "}," + tsk_sec.act_number +
tsk_sec.wcet.tv_nsec + "}," + tsk_sec.act_number +
",0,act_" + tsk_sec.name +
",exec_" + tsk_sec.name + "},\n");
total_task_section++;
208,19 → 208,13
process_oneshot_task(e, out);
task_type=21;
} else if (t.getValue().equals("CyclicalTask")) {
String[] dline=pattern.split(e.getChild("dline").getText());
task_type=22;
time.tv_sec = Long.valueOf(dline[0]).longValue();
time.tv_nsec = Long.valueOf(dline[1]).longValue() / 1000;
 
 
act=process_periodic_task(e, out);
task_type=22;
act=process_cyclical_task(e, out);
}
 
task_class section=new task_class();
section.deadline=new timespec();
section.deadline.tv_sec=time.tv_sec;
section.deadline.tv_nsec=time.tv_nsec;
section.wcet=new timespec();
section.name="task"+task_group;
section.contract=task_server;
section.group=task_group;
229,16 → 223,31
section.localscheduler=localscheduler;
section.number=Integer.valueOf(e.getChild("number").getText()).intValue();
 
Element dl = e.getChild("dline");
if (dl != null) {
 
String[] wcet=pattern.split(e.getChild("wcet").getText());
time.tv_sec = Long.valueOf(wcet[0]).longValue();
time.tv_nsec = Long.valueOf(wcet[1]).longValue() / 1000;
section.wcet=new timespec();
section.wcet.tv_sec=time.tv_sec;
section.wcet.tv_nsec=time.tv_nsec;
String[] dline=pattern.split(dl.getText());
time.tv_sec = Long.valueOf(dline[0]).longValue();
time.tv_nsec = Long.valueOf(dline[1]).longValue() * 1000;
section.deadline.tv_sec=time.tv_sec;
section.deadline.tv_nsec=time.tv_nsec;
 
}
 
 
Element wc = e.getChild("wcet");
if (wc != null) {
String[] wcet=pattern.split(e.getChild("wcet").getText());
time.tv_sec = Long.valueOf(wcet[0]).longValue();
time.tv_nsec = Long.valueOf(wcet[1]).longValue() * 1000;
section.wcet.tv_sec=time.tv_sec;
section.wcet.tv_nsec=time.tv_nsec;
 
}
 
Task_Section.add(section);
task_group++;
 
252,7 → 261,7
String[] start_time=pattern.split(act_section.getChild("start_time").getText());
Element exec_section=e.getChild("exec_section");
 
String[] exec_const=pattern.split(exec_section.getChild("exec_const").getText());
String[] exec_const=pattern.split(exec_section.getChild("exec_time").getText());
try {
out.write("struct timespec act_task"+task_group+"[]={{"+start_time[0]+","+start_time[1]+"},};\n\n");
out.write("struct timespec exec_task"+task_group+"[]={{"+exec_const[0]+","+exec_const[1]+"},};\n\n");
270,7 → 279,7
String[] start_time=pattern.split(act_section.getChild("start_time").getText());
 
Element exec_section=e.getChild("exec_section");
String[] exec_const=pattern.split(exec_section.getChild("exec_const").getText());
String[] exec_const=pattern.split(exec_section.getChild("exec_time").getText());
 
try {
out.write("struct timespec act_task"+task_group+"[]={{"+start_time[0]+","+start_time[1]+"},};\n\n");
294,26 → 303,26
long act_delta=0;
timespec delta_act_ts = new timespec();
 
if (deltatime.exists()) {
if (deltatime != null) {
delta_time = pattern.split(deltatime.getText());
delta_act_ts.tv_sec = Long.valueOf(delta_time[0]).longValue();
delta_act_ts.tv_nsec = Long.valueOf(delta_time[1]).longValue() / 1000;
delta_act_ts.tv_nsec = Long.valueOf(delta_time[1]).longValue() * 1000;
act_delta = delta_act_ts.TIMESPEC2USEC();
}
 
Element exec_section=e.getChild("exec_section");
String[] exec_const=pattern.split(exec_section.getChild("exec_const").getText());
Element execdelta=exec_section.getChild("exec_delta");
String[] exec_const=pattern.split(exec_section.getChild("exec_time").getText());
Element execdelta=exec_section.getChild("delta_time");
String[] exec_delta;
 
long exec_delta_long = 0;
timespec delta_act_ts = new timespec();
timespec exec_delta_ts = new timespec();
 
if (execdelta.exists()) {
if (execdelta != null) {
exec_delta=pattern.split(execdelta.getText());
exec_act_ts.tv_sec = Long.valueOf(exec_delta[0]).longValue();
exec_act_ts.tv_nsec = Long.valueOf(exec_delta[1]).longValue() / 1000;
exec_delta_long = exec_act_ts.TIMESPEC2USEC();
exec_delta_ts.tv_sec = Long.valueOf(exec_delta[0]).longValue();
exec_delta_ts.tv_nsec = Long.valueOf(exec_delta[1]).longValue() * 1000;
exec_delta_long = exec_delta_ts.TIMESPEC2USEC();
}
 
try {
322,13 → 331,13
 
timespec time = new timespec();
time.tv_sec = Long.valueOf(period[0]).longValue();
time.tv_nsec = Long.valueOf(period[1]).longValue() / 1000;
time.tv_nsec = Long.valueOf(period[1]).longValue() * 1000;
 
long usecperiod = time.TIMESPEC2USEC();
timespec nextact = new timespec();
 
time.tv_sec = Long.valueOf(start_time[0]).longValue();
time.tv_nsec = Long.valueOf(start_time[1]).longValue() / 1000;
time.tv_nsec = Long.valueOf(start_time[1]).longValue() * 1000;
Random rd = new Random();
 
335,9 → 344,11
while (simulation_time.TIMESPEC_A_GT_B(time)) {
 
nextact.tv_sec = Long.valueOf(period[0]).longValue();
nextact.tv_nsec = Long.valueOf(period[1]).longValue() / 1000;
nextact.tv_nsec = Long.valueOf(period[1]).longValue() * 1000;
 
nextact.ADDUSEC2TIMESPEC((rd.nextInt() & Integer.MAX_INT) % act_delta - act_delta/2);
if (act_delta != 0) {
nextact.ADDUSEC2TIMESPEC((rd.nextInt() & Integer.MAX_VALUE) % act_delta - act_delta/2);
}
 
time.ADDUSEC2TIMESPEC(usecperiod);
out.write(" {"+nextact.tv_sec+","+nextact.tv_nsec/1000+"},\n");
352,9 → 363,11
for (int i=0; i<activated; i++) {
 
nextexec.tv_sec = Long.valueOf(exec_const[0]).longValue();
nextexec.tv_nsec = Long.valueOf(exec_const[1]).longValue() / 1000;
nextexec.tv_nsec = Long.valueOf(exec_const[1]).longValue() * 1000;
 
nextexec.ADDUSEC2TIMESPEC((rd.nextInt() & Integer.MAX_INT) % exec_delta_long - exec_delta_long/2);
if (exec_delta_long != 0) {
nextexec.ADDUSEC2TIMESPEC((rd.nextInt() & Integer.MAX_VALUE) % exec_delta_long - exec_delta_long/2);
}
out.write(" {"+nextexec.tv_sec+","+nextexec.tv_nsec/1000+"},\n");