Avertissement, ce qui suit est peut-être spécifique à GHDL (un simulateur VHDL libre), je vais tout de même poser ma question puisque personne ne semble pouvoir m'éclairer.

Essayant de faire communiquer GHDL avec un autre processus, j'utilise les mécanismes POSIX de "named" semaphores et de mémoire partagée. Avant d'intégrer le tout à GHDL, j'ai fait mes tests en écrivant de simples client/serveur utilisant les "named" semaphores POSIX et tout fonctionne à merveille.

Cependant, en intégrant le tout à GHDL (i.e. à ma librairie partagé VHPI), je suis confronté à un imprévu: le processus GHDL ne se réveille jamais i.e. sem_wait() ne retourne jamais même si une semaphore est "postée" par un autre processus.

J'arrive à contourner le problème en "poolant" pour la sémaphore, mais je préférerais de loin trouver le problème. Pour ce que ça vaut, voici ce que je fais pour contourner le problème: "while( sem_trywait(csem) == -1 ) usleep(100);" .

Donc, voici enfin ma question, est-ce que quelqu'un a une idée de ce qui pourrait causer le problème? Qu'est-ce qui pourrait faire en sorte que le sem_wait() ne retourne jamais alors qu'il y a 1 ou + sémaphores de disponible?