]> rtime.felk.cvut.cz Git - frescor/fosa.git/blobdiff - src_aquosa/fosa_mutexes_and_condvars.c
Added the support for POSIX98 symbols for priority inheritance in mutexes if AQuoSA...
[frescor/fosa.git] / src_aquosa / fosa_mutexes_and_condvars.c
index 32f4110a20b50cc33a85eee7463baec83d7fb3c3..efe1701ea87fbaa150fdf0d8655dd0a5cf83d18a 100644 (file)
 
 
 /*******************************************************
- * Mutexes with priority ceiling
+ * Mutexes with priority/bandwidth inheritance
  ******************************************************/
 
 
 int fosa_mutex_init(frsh_mutex_t *mutex, int prioceiling)
 {
-       /* priority ceiling if, for now, ignored */
-       return pthread_mutex_init(mutex, NULL);
+       pthread_mutexattr_t mutex_attr;
+
+       /* prioceiling serves as a flag */
+       if (prioceiling) {
+               /* We use priority inheritance as the default protocol */
+               pthread_mutexattr_init(&mutex_attr);
+               pthread_mutexattr_setprotocol(&mutex_attr, PTHREAD_PRIO_INHERIT);
+               
+               return pthread_mutex_init(mutex, &mutex_attr);
+       } else
+               return pthread_mutex_init(mutex, NULL);
 }
 
 int fosa_mutex_destroy(frsh_mutex_t *mutex)