On Sunday 08 November 2015 06:01:08 Octavian Purdila wrote: > >> +static void *sem_alloc(int count) > >> +{ > >> + struct pthread_sem *sem; > >> + > >> + sem = malloc(sizeof(*sem)); > >> + if (!sem) > >> + return NULL; > >> + > >> + pthread_mutex_init(&sem->lock, NULL); > >> + sem->count = count; > >> + pthread_cond_init(&sem->cond, NULL); > >> + > >> + return sem; > >> +} > > > > What is the reason to have generalized semaphores in the > > host API rather than a simple mutex? > > > > Currently waking up from idle after an IRQ event requires a semaphore. > I'll see if we can use a simple mutex for this. According to the pthread_mutex_unlock() man page, you are not allowed to unlock a mutex from any thread other than the one that owns the mutex through pthread_mutex_lock(), so if the IRQ event is sent to another thread, that would not be safe even if it happens to work on linux+glibc. Another option would be to use futexes as the basic primitive, which might make the implementation for Linux hosts a bit more efficient, but complicates the implementation for hosts that do not implement those. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html