I have been trying to get some info on how the waiting on a semaphore is implemented, but have found no "reliable" answer.
Some imply a change in the thread state (making it non-selectable by the scheduler) until some other thread increments the counter. Others led me to think that the thread checks the value of the counter at a regular rate.

So, does anyone have a clue how this is done?

P.D: The semaphores I am interested are the ones in <semaphore.h>

Thanks in advance.