[pok-devel] Join the POK team

[ Thread Index | Date Index | More lists.tuxfamily.org/pok-devel Archives ]


Hello, 

I am, Antoine Jaouën, a PhD student under the direction of Laurent Pautet, Etienne Borde and Thomas Robert from the LTCI - Telecom ParisTech.

I would like to join your team in order to integrate my work into your project POK and help your team to improve the project.

I developed a deterministic implementation of ARINC653 inter-partition communications based on the Periodic-Delayed protocol introduced in : Deterministic Implementation of Periodic-Delayed Communications and Experimentation in AADL. Fabien Cadoret, Thomas Robert, Etienne Borde, Laurent Pautet, and Frank Singhoff. ISORC 2013.


In order to start a collaboration, I want to share with you some bugs I found in the current version of POK. The first bug is in the next_activation time of threads after a call of pok_thread_period (which induces a thread to wait until its next period time).

The bug is located in kernel/core/sched.c :
line 206 : 
       thread->next_activation = thread->period + POK_GETTICK();
 

This way, a thread waits its full period duration after ending its execution. Nevertheless it must wait only the remaining time until its next period time. 

Here is the correction : ​
       thread->next_activation = thread->next_activation + thread->period;   


I also corrected the toolchain. The path of 'ar' was hard-coded in 'misc/mk/rules-partition.mk'.

My last correction was the allocation of 'Partition_Slots' in 'examples/arinc653-queueing/model.aadl', which were too long. I have not checked/corrected all examples but some others have also issues with regard to the dimension of 'Major_Frame', 'Partition_Slots' and 'Period' of threads. 


You will find a patch as an attachment of this email, which corrects all those issues.


Best regards,
​Antoine Jaouën​



 
 
 
 
Antoine JAOUËN
Doctorant / PhD. Student
Institut de Recherche Technologique SystemX

8, avenue de la Vauve - 91120 PALAISEAU

Phone +33 1 69 08 05 60

Index: misc/mk/rules-common.mk
===================================================================
--- misc/mk/rules-common.mk	(révision 47)
+++ misc/mk/rules-common.mk	(copie de travail)
@@ -30,7 +30,7 @@
 
 %.a: $(LO_DEPS)
 	$(ECHO) $(ECHO_FLAGS) $(ECHO_FLAGS_ONELINE) "[AR] $@ "
-	$(AR) $@ $(LO_DEPS)
+	$(AR) rcs $@ $(LO_DEPS)
 	if test $$? -eq 0; then $(ECHO) $(ECHO_FLAGS) $(ECHO_GREEN) " OK "; else $(ECHO) $(ECHO_FLAGS) $(ECHO_RED) " KO"; fi
 
 %.o: %.S
Index: misc/mk/rules-partition.mk
===================================================================
--- misc/mk/rules-partition.mk	(révision 47)
+++ misc/mk/rules-partition.mk	(copie de travail)
@@ -17,8 +17,8 @@
 	$(CD) $(POK_PATH)/libpok && $(MAKE) distclean all
 	$(CP) $(POK_PATH)/libpok/libpok.a `pwd`/
 	$(ECHO) $(ECHO_FLAGS) $(ECHO_FLAGS_ONELINE) "[AR] libpart.a "
-	/bin/ar -x libpok.a
-	/bin/ar -csr libpart.a $(OBJS) *.lo
+	$(AR) -x libpok.a
+	$(AR) -csr libpart.a $(OBJS) *.lo
 	if test $$? -eq 0; then $(ECHO) $(ECHO_FLAGS) $(ECHO_GREEN) " OK "; else $(ECHO) $(ECHO_FLAGS) $(ECHO_RED) " KO"; fi
 	rm *.lo
 
Index: misc/conf-env.pl
===================================================================
--- misc/conf-env.pl	(révision 47)
+++ misc/conf-env.pl	(copie de travail)
@@ -108,7 +108,6 @@
 
 my %tools_flags =
 (
- "AR" =>  ["rcs"],
  "RM" =>  ["-r", "-f"],
  );
 

Index: examples/arinc653-queueing/model.aadl
===================================================================
--- examples/arinc653-queueing/model.aadl	(révision 47)
+++ examples/arinc653-queueing/model.aadl	(copie de travail)
@@ -96,7 +96,7 @@
    partition_common : virtual processor partition.common;
 properties
    ARINC653::Module_Major_Frame => 1000ms;
-   ARINC653::Partition_Slots => (1000ms, 1000ms);
+   ARINC653::Partition_Slots => (500ms, 500ms);
    ARINC653::Slots_Allocation => ( reference (partition_secure), reference (partition_common));
 end ppc.impl;
 
Index: kernel/core/sched.c
===================================================================
--- kernel/core/sched.c	(révision 47)
+++ kernel/core/sched.c	(copie de travail)
@@ -203,7 +203,7 @@
      {
        thread->state = POK_STATE_RUNNABLE;
        thread->remaining_time_capacity =  thread->time_capacity;
-       thread->next_activation = thread->period + POK_GETTICK();
+       thread->next_activation = thread->next_activation + thread->period; 
      }
    }
 


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/