final commit assignment 2 assignment2
authorroot <root@xenomailinux.localdomain>
Sun, 13 Sep 2015 09:57:39 +0000 (11:57 +0200)
committerroot <root@xenomailinux.localdomain>
Sun, 13 Sep 2015 09:57:39 +0000 (11:57 +0200)
mart/ex02/ex02d.c
natanael/ex02/Explanation ex02.txt [deleted file]
natanael/ex02/Makefile
natanael/ex02/ex02.c [deleted file]
natanael/ex02/ex02a.c [new file with mode: 0644]
natanael/ex02/ex02b.c
natanael/ex02/ex02c.c
natanael/ex02/ex02d.c
natanael/ex02/explanation.txt [new file with mode: 0644]

index db51849..0408825 100644 (file)
@@ -33,9 +33,7 @@ int main(int argc, char* argv[])
        rt_task_create(&task2, "t2", 0, 50, 0);
        rt_task_create(&task3, "t3", 0, 50, 0);
 
-       uint64_t num1 = 1000000000LLU;
-       uint64_t num2 = 2000000000LLU;
-       uint64_t num3 = 3000000000LLU;
+       uint64_t num1 = 1000000000LLU, num2 = 2000000000LLU, num3 = 3000000000LLU;
 
        rt_task_start(&task1, &demo, (void *)&num1);
        rt_task_start(&task2, &demo, (void *)&num2);
diff --git a/natanael/ex02/Explanation ex02.txt b/natanael/ex02/Explanation ex02.txt
deleted file mode 100644 (file)
index e3502bf..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-DES group members:
-Natanael Adityasatria 4417992
-Mart Lubbers 
-
-2a
-The output describes the first task is the task that is first executed by the syntax rt_task_start. So the task order is ordered from the source code's order (in this case: inside loop, the lowest counter will be run first)
-
-2b
-The output describes that we can pass the integer argument that belongs to the task. In addition to the task name (string), the task can also has an integer value.
-
-2c
-There is no differences in the output with the exercise 2b.
-The order is the same as in exercise 2b.
-From the source code, this is because we put each of tasks in a loop.
-So the first task created and the first task started in the loop will
-be run first time. For the next loop, it will create and start the
-next task. So it is like the matter of the code order not the task
-priority.
-
-2d
-It is because we use Sleep of 1 second then the loop(while) will be run every one second. All tasks have the same priority, but each of tasks has different periods.
-The first task that has period of 1 will be run every seconds while the task that has period of 2 will be run once in two seconds. In addition, the task that has period of 3 will be run once in three seconds.
\ No newline at end of file
index d039644..0511f0e 100644 (file)
@@ -1,99 +1,9 @@
-###### CONFIGURATION ######
+CFLAGS=$(shell xeno-config --xeno-cflags) -lnative -lrtdk
+LDFLAGS=$(shell xeno-config --xeno-ldflags)
 
-### List of applications to be build
-APPLICATIONS = ex02
+BINARIES=$(addprefix ex02,a b c d)
 
-### Note: to override the search path for the xeno-config script, use "make XENO=..."
+all: $(BINARIES)
 
-
-### List of modules to be build
-MODULES = ex02
-
-### Note: to override the kernel source path, use "make KSRC=..."
-
-
-
-###### USER SPACE BUILD (no change required normally) ######
-ifeq ($(KERNELRELEASE),)
-ifneq ($(APPLICATIONS),)
-
-### Default Xenomai installation path
-XENO ?= /usr/xenomai
-
-XENOCONFIG=$(shell PATH=$(XENO):$(XENO)/bin:$(PATH) which xeno-config 2>/dev/null)
-
-### Sanity check
-ifeq ($(XENOCONFIG),)
-all::
-       @echo ">>> Invoke make like this: \"make XENO=/path/to/xeno-config\" <<<"
-       @echo
-endif
-
-
-CC=$(shell $(XENOCONFIG) --cc)
-
-CFLAGS=$(shell $(XENOCONFIG) --xeno-cflags) $(MY_CFLAGS)
-
-LDFLAGS=$(shell $(XENOCONFIG) --xeno-ldflags) $(MY_LDFLAGS) -lnative
-
-# This includes the library path of given Xenomai into the binary to make live
-# easier for beginners if Xenomai's libs are not in any default search path.
-LDFLAGS+=-Xlinker -rpath -Xlinker $(shell $(XENOCONFIG) --libdir)
-
-LDFLAGS+= -lrtdk
-
-all:: $(APPLICATIONS)
-
-clean::
-       $(RM) $(APPLICATIONS) *.o
-
-endif
-endif
-
-
-
-###### SPECIAL TARGET RULES ######
-rtprint: rtprint.c
-       $(CC) $(CFLAGS) $? $(LDFLAGS) -lrtdk -o $@
-
-
-
-###### KERNEL MODULE BUILD (no change required normally) ######
-ifneq ($(MODULES),)
-
-### Default to sources of currently running kernel
-KSRC ?= /lib/modules/$(shell uname -r)/build
-
-OBJS     := ${patsubst %, %.o, $(MODULES)}
-CLEANMOD := ${patsubst %, .%*, $(MODULES)}
-PWD      := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
-
-### Kernel 2.6
-ifeq ($(findstring 2.6,$(KSRC)),2.6)
-
-obj-m        := $(OBJS)
-EXTRA_CFLAGS := -I$(KSRC)/include/xenomai -I$(KSRC)/include/xenomai/posix $(ADD_CFLAGS)
-
-all::
-       $(MAKE) -C $(KSRC) SUBDIRS=$(PWD) modules
-
-### Kernel 2.4
-else
-
-ARCH    ?= $(shell uname -i)
-INCLUDE := -I$(KSRC)/include/xenomai -I$(KSRC)/include/xenomai/compat -I$(KSRC)/include/xenomai/posix
-CFLAGS  += $(shell $(MAKE) -s -C $(KSRC) CC=$(CC) ARCH=$(ARCH) SUBDIRS=$(PWD) modules) $(INCLUDE)
-
-all:: $(OBJS)
-
-endif
-
-## Target for capturing 2.4 module CFLAGS
-modules:
-       @echo "$(CFLAGS)"
-
-clean::
-       $(RM) $(CLEANMOD) *.o *.ko *.mod.c Module*.symvers
-       $(RM) -R .tmp*
-
-endif
\ No newline at end of file
+clean:
+       $(RM) -v $(BINARIES) *.o
diff --git a/natanael/ex02/ex02.c b/natanael/ex02/ex02.c
deleted file mode 100644 (file)
index e3ecdc8..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <stdio.h>
-#include <signal.h>
-#include <unistd.h>
-#include <sys/mman.h>
-
-#include <native/task.h>
-#include <native/timer.h>
-
-#include  <rtdk.h>
-RT_TASK demo_task;
-
-void demo(void *arg)
-{
-  RT_TASK *curtask;
-  RT_TASK_INFO curtaskinfo;
-
-  // inquire current task
-  curtask=rt_task_self();
-  rt_task_inquire(curtask,&curtaskinfo);
-
-  // print task name
-  rt_printf("Task name : %s \n", curtaskinfo.name);
-}
-
-int main(int argc, char* argv[])
-{
-  char  str[10] ;
-  int i;
-
-  // Perform auto-init of rt_print buffers if the task doesn't do so
-  rt_print_auto_init(1);
-
-  // Lock memory : avoid memory swapping for this program
-  mlockall(MCL_CURRENT|MCL_FUTURE);
-
-  rt_printf("start task\n");
-
-  for (i=0; i<5; i++)
-  {
-         /*
-          * Arguments: &task,
-          *            name,
-          *            stack size (0=default),
-          *            priority,
-          *            mode (FPU, start suspended, ...)
-          */
-         sprintf(str,"hello-%d",i);
-         rt_task_create(&demo_task, str, 0, 50, 0);
-         /*
-          * Arguments: &task,
-          *            task function,
-          *            function argument
-          */
-         rt_task_start(&demo_task, &demo, 0);
-  }
-
-}
\ No newline at end of file
diff --git a/natanael/ex02/ex02a.c b/natanael/ex02/ex02a.c
new file mode 100644 (file)
index 0000000..072ff69
--- /dev/null
@@ -0,0 +1,36 @@
+#include <stdio.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sys/mman.h>
+
+#include <native/task.h>
+#include <native/timer.h>
+
+#include  <rtdk.h>
+RT_TASK demo_task;
+
+void demo(void *arg)
+{
+  RT_TASK *curtask;
+  RT_TASK_INFO curtaskinfo;
+  curtask=rt_task_self();
+  rt_task_inquire(curtask, &curtaskinfo);
+  rt_printf("Task name : %s\n", curtaskinfo.name);
+}
+
+int main(int argc, char* argv[])
+{
+  char  str[10] ;
+  int i;
+
+  rt_print_auto_init(1);
+  mlockall(MCL_CURRENT | MCL_FUTURE);
+  rt_printf("start task\n");
+
+  for (i=0; i<5; i++)
+  {
+         sprintf(str,"hello-%d",i);
+         rt_task_create(&demo_task, str, 0, 50, 0);
+         rt_task_start(&demo_task, &demo, 0);
+  }
+}
index d598b82..57bd961 100644 (file)
@@ -11,16 +11,12 @@ RT_TASK demo_task;
 
 void demo(void *arg)
 {
+  int num = * (int *)arg;
   RT_TASK *curtask;
   RT_TASK_INFO curtaskinfo;
-
-  // inquire current task
   curtask=rt_task_self();
-  rt_task_inquire(curtask,&curtaskinfo);
-
-  // print task name
-  int num = * (int *)arg;
-  rt_printf("Task name : %s - Argument %d \n", curtaskinfo.name,num);
+  rt_task_inquire(curtask, &curtaskinfo);
+  rt_printf("Task name: %s - Argument %d\n", curtaskinfo.name, num);
 }
 
 int main(int argc, char* argv[])
@@ -28,31 +24,14 @@ int main(int argc, char* argv[])
   char  str[10] ;
   int i;
 
-  // Perform auto-init of rt_print buffers if the task doesn't do so
   rt_print_auto_init(1);
-
-  // Lock memory : avoid memory swapping for this program
-  mlockall(MCL_CURRENT|MCL_FUTURE);
-
+  mlockall(MCL_CURRENT| MCL_FUTURE);
   rt_printf("start task\n");
 
   for (i=0; i<5; i++)
   {
-         /*
-          * Arguments: &task,
-          *            name,
-          *            stack size (0=default),
-          *            priority,
-          *            mode (FPU, start suspended, ...)
-          */
-         sprintf(str,"hello-%d",i);
+         sprintf(str, "hello-%d", i);
          rt_task_create(&demo_task, str, 0, 50, 0);
-         /*
-          * Arguments: &task,
-          *            task function,
-          *            function argument
-          */
          rt_task_start(&demo_task, &demo, &i);
   }
-
-}
\ No newline at end of file
+}
index 9411d1b..fc2ce72 100644 (file)
@@ -11,16 +11,12 @@ RT_TASK demo_task;
 
 void demo(void *arg)
 {
+  int num = * (int *)arg;
   RT_TASK *curtask;
   RT_TASK_INFO curtaskinfo;
-
-  // inquire current task
   curtask=rt_task_self();
-  rt_task_inquire(curtask,&curtaskinfo);
-
-  // print task name
-  int num = * (int *)arg;
-  rt_printf("Task name : %s - Argument %d \n", curtaskinfo.name,num);
+  rt_task_inquire(curtask, &curtaskinfo);
+  rt_printf("Task name: %s - Argument %d\n", curtaskinfo.name, num);
 }
 
 int main(int argc, char* argv[])
@@ -28,32 +24,14 @@ int main(int argc, char* argv[])
   char  str[10] ;
   int i;
 
-  // Perform auto-init of rt_print buffers if the task doesn't do so
   rt_print_auto_init(1);
-
-  // Lock memory : avoid memory swapping for this program
-  mlockall(MCL_CURRENT|MCL_FUTURE);
-
+  mlockall(MCL_CURRENT | MCL_FUTURE);
   rt_printf("start task\n");
 
   for (i=0; i<5; i++)
   {
-         /*
-          * Arguments: &task,
-          *            name,
-          *            stack size (0=default),
-          *            priority,
-          *            mode (FPU, start suspended, ...)
-          */
-         sprintf(str,"hello-%d",i);
+         sprintf(str, "hello-%d", i);
          rt_task_create(&demo_task, str, 0, 50+i, 0);
-         
-         /*
-          * Arguments: &task,
-          *            task function,
-          *            function argument
-          */
          rt_task_start(&demo_task, &demo, &i);
   }
-
-}
\ No newline at end of file
+}
index f54ded3..a77e783 100644 (file)
@@ -11,24 +11,23 @@ RT_TASK demo_task;
 
 void demo(void *arg)
 {
-  sleep(1);
   RT_TASK *curtask;
   RT_TASK_INFO curtaskinfo;
   // Read system clock
   RTIME period = 1e9;
+  rt_task_sleep(period);
 
   // inquire current task
   curtask=rt_task_self();
   rt_task_inquire(curtask,&curtaskinfo);
 
   // determine the period
-  int num = * (int *)arg;
-  period*=num;
-  rt_task_set_periodic(NULL,TM_NOW,period);
+  int num = *(int *)arg;
+  period *= num;
+  rt_task_set_periodic(NULL, TM_NOW, period);
   
   while(1){
-         // print task name
-         rt_printf("Task name : %s - Period %d \n", curtaskinfo.name,num);
+         rt_printf("Task name: %s - Period %d\n", curtaskinfo.name, num);
          rt_task_wait_period(NULL);
   }
 }
@@ -39,34 +38,18 @@ int main(int argc, char* argv[])
   int i;
   int periods[3];
 
-  // Perform auto-init of rt_print buffers if the task doesn't do so
   rt_print_auto_init(1);
-
-  // Lock memory : avoid memory swapping for this program
-  mlockall(MCL_CURRENT|MCL_FUTURE);
-
+  mlockall(MCL_CURRENT | MCL_FUTURE);
   rt_printf("start task\n");
 
   for (i=0; i<3; i++)
   {
-         /*
-          * Arguments: &task,
-          *            name,
-          *            stack size (0=default),
-          *            priority,
-          *            mode (FPU, start suspended, ...)
-          */
-         sprintf(str,"hello-%d",i);
-         periods[i]=i+1;
+         sprintf(str, "hello-%d", i);
+         periods[i] = i + 1;
          rt_task_create(&demo_task, str, 0, 50, 0);
-         
-         /*
-          * Arguments: &task,
-          *            task function,
-          *            function argument
-          */
          rt_task_start(&demo_task, &demo, &periods[i]);
   }
+
   rt_printf("end program by CTRL-C\n");
   pause();
-}
\ No newline at end of file
+}
diff --git a/natanael/ex02/explanation.txt b/natanael/ex02/explanation.txt
new file mode 100644 (file)
index 0000000..cb778d4
--- /dev/null
@@ -0,0 +1,28 @@
+DES group members:
+Natanael Adityasatria s4417992
+Mart Lubbers s4109503
+
+2a
+The output describes the first task is the task that is first executed by the
+syntax rt_task_start. So the task order is ordered from the source code's order
+(in this case: inside loop, the lowest counter will be run first)
+
+2b
+The output describes that we can pass the integer argument that belongs to the
+task. In addition to the task name (string), the task can also has an integer
+value.
+
+2c
+There is no differences in the output with the exercise 2b.
+The order is the same as in exercise 2b.
+From the source code, this is because we put each of tasks in a loop.  So the
+first task created and the first task started in the loop will be run first
+time. For the next loop, it will create and start the next task. So it is like
+the matter of the code order not the task priority.
+
+2d
+It is because we use Sleep of 1 second then the loop(while) will be run every
+one second. All tasks have the same priority, but each of tasks has different
+periods.  The first task that has period of 1 will be run every seconds while
+the task that has period of 2 will be run once in two seconds. In addition, the
+task that has period of 3 will be run once in three seconds.