sem_post(3)

sem_post3

Increment (unlock) a semaphore

Usage

#include <semaphore.h>

int

sem_post(sem_t *sem);

Library

Standard C Library (libc, -lc)

Overview

The sem_post() function increments (unlocks) the semaphore pointed to by sem. If there are threads blocked on the semaphore when sem_post() is called, then the highest priority thread that has been blocked the longest on the semaphore will be allowed to return from sem_wait().

The sem_post() function is signal-reentrant and may be called within signal handlers.

Return values

The sem_post() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

Errors

The sem_post() function will fail if:

[EINVAL]

The sem argument points to an invalid semaphore.

[EOVERFLOW]

The semaphore value would exceed SEM_VALUE_MAX.

Releases

70 releases since FreeBSD 4.0-RELEASE; the text changed 43 times.

  1. 4.0
  2. 4.1
  3. 4.1.1–4.2
  4. 4.3
  5. 4.4
  6. 4.5–4.11
  7. 5.0
  8. 5.1
  9. 5.2–5.2.1
  10. 5.3–5.4
  11. 5.5
  12. 6.0–6.3
  13. 6.4
  14. 7.0
  15. 7.1
  16. 7.2
  17. 7.3
  18. 7.4
  19. 8.0
  20. 8.1
  21. 8.2
  22. 8.3
  23. 8.4
  24. 9.0
  25. 9.1
  26. 9.2
  27. 9.3
  28. 10.0
  29. 10.1
  30. 10.2
  31. 10.3
  32. 10.4
  33. 11.0
  34. 11.1
  35. 11.2
  36. 11.3
  37. 11.4
  38. 12.0
  39. 12.1
  40. 12.2
  41. 12.3
  42. 12.4
  43. 13.0–13.2
  44. 13.3–16.0

Standards

The sem_post() function conforms to ISO/IEC 9945-1:1996 (“POSIX.1”).

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.