]> rtime.felk.cvut.cz Git - fpga/zynq/mzed-dc-control-sw.git/commitdiff
Added thread priority changing, renamed
authorTomas Nepivoda <nepivtom@fel.cvut.cz>
Sun, 15 May 2016 21:11:11 +0000 (23:11 +0200)
committerTomas Nepivoda <nepivtom@fel.cvut.cz>
Sun, 15 May 2016 21:11:11 +0000 (23:11 +0200)
src/irc_test/irc_rt.c [moved from src/irc_test/irc.c with 50% similarity]

similarity index 50%
rename from src/irc_test/irc.c
rename to src/irc_test/irc_rt.c
index 881b7f7cd0b9946258a12416732b73f7ad4cfd9f..26ae63fc557815b4bc8d6c4e6c71e9ac5d6d7084 100644 (file)
@@ -3,16 +3,43 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <poll.h>
+#include <time.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdint.h>
+#include <sys/mman.h>
+#include <pthread.h>
+#include <signal.h>
+
+int base_task_prio;
 
 void main(){
        int i;
        struct pollfd pfd;
-       char array[10000][2];
+       char array[50000][2];
        char tmp[1];
+       char a[2];
+       char b[2];
 
-       char a[2];ยจ
+       pthread_attr_t attr;
+       struct sched_param schparam;
+       if (pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED) != 0) {
+               fprintf(stderr, "pthread_attr_setinheritsched failed\n");
+       }
 
-       char b[2];
+       if (pthread_attr_setschedpolicy(&attr, SCHED_FIFO) != 0) {
+               fprintf(stderr, "pthread_attr_setschedpolicy SCHED_FIFO failed\n");
+       }
+
+       int fifo_min_prio = sched_get_priority_min(SCHED_FIFO);
+       int fifo_max_prio = sched_get_priority_max(SCHED_FIFO);
+       base_task_prio = fifo_max_prio - 20;
+       if (base_task_prio < fifo_min_prio){
+               base_task_prio = fifo_min_prio;
+       }
+
+       schparam.sched_priority = base_task_prio;
 
        int irc_A, irc_B, irc_IRQ;
        irc_A = open("/sys/class/gpio/gpio917/value", O_RDONLY);
@@ -24,7 +51,7 @@ void main(){
        if(irc_IRQ < 0){
                printf("IRC_IRQ export failed!");
        }
-       for(i=0;i<10000;i++){           
+       for(i=0;i<50000;i++){           
                lseek(irc_IRQ, 0, SEEK_SET);
                read(irc_IRQ, tmp,1);
 
@@ -40,7 +67,7 @@ void main(){
        close(irc_IRQ);
 
        //printf("                                 flag\n");
-       for(i=0;i<10000;i++){
+       for(i=0;i<50000;i++){
                printf("%c ", array[i][0]);
                printf("%c\n", array[i][1]);
        }