]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
Fix compilation of frsh_cpucg.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Thu, 9 Apr 2009 14:22:03 +0000 (16:22 +0200)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Thu, 9 Apr 2009 14:22:03 +0000 (16:22 +0200)
Some more consideration about conditions which
require parameters update should be checked.

Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
resources/cpucg/lib/frsh_cpucg.c

index c49f18c05a7d58a1d4b8a98bfd15a303598ff857..4539851ce489ff2f4f99864822268ee6e60bda2b 100644 (file)
@@ -286,6 +286,7 @@ int frsh_thread_create_and_bind(const frsh_vres_id_t vres,
        sem_t stopper;
        struct sched_param param;
        int p = 0;
+       frsh_thread_attr_t updated_attr;
 
        sem_init(&stopper, 0, 0);
        
@@ -299,21 +300,23 @@ int frsh_thread_create_and_bind(const frsh_vres_id_t vres,
        wp.vres = vres;
        wp.stopper = &stopper;
 
-       pthread_attr_getschedparam(attr, &param);
+       pthread_attr_getschedparam(thread_attr, &param);
        p = param.sched_priority;
        printf("priority = %d\n", p);
        if (p == 0) {
+               updated_attr = *thread_attr;
                param.sched_priority = 1;
-               pthread_attr_setschedparam(attr, &param);
-               pthread_attr_getschedparam(attr, &param);
+               pthread_attr_setschedparam(&updated_attr, &param);
+               pthread_attr_getschedparam(&updated_attr, &param);
                printf("changed priority = %d\n", param.sched_priority);
-               pthread_attr_setinheritsched(attr, PTHREAD_EXPLICIT_SCHED);
-               pthread_attr_setschedpolicy(attr, SCHED_RR);
-               pthread_attr_setscope(attr, PTHREAD_SCOPE_SYSTEM);
+               pthread_attr_setinheritsched(&updated_attr, PTHREAD_EXPLICIT_SCHED);
+               pthread_attr_setschedpolicy(&updated_attr, SCHED_RR);
+               pthread_attr_setscope(&updated_attr, PTHREAD_SCOPE_SYSTEM);
+               thread_attr = &updated_attr; 
        }
        
        /* create the wrapper thread */ 
-       rv = fosa_thread_create(thread, attr, wrapper_pthread, (void*)&wp);
+       rv = fosa_thread_create(thread, thread_attr, wrapper_pthread, (void*)&wp);
        if (rv != 0)
                return(rv);