UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
platform_semaphore.c File Reference
#include "debug.h"
#include <semaphore.h>
#include "compat/platform_semaphore.h"
Include dependency graph for platform_semaphore.c:

Go to the source code of this file.

Functions

void platform_sem_destroy (void *semStructure)
 
void platform_sem_init (void *semStructure, int pshared, int initialValue)
 
void platform_sem_post (void *semStructure)
 
void platform_sem_wait (void *semStructure)
 

Function Documentation

◆ platform_sem_destroy()

void platform_sem_destroy ( void * semStructure)

Definition at line 103 of file platform_semaphore.c.

104{
105#ifdef __APPLE__
106 semaphore_destroy(mach_task_self(), *(semaphore_t *) semStructure);
107#else
108 sem_destroy((sem_t *) semStructure);
109#endif /* __APPLE__ */
110}

Referenced by audio_cap_jack_done().

◆ platform_sem_init()

void platform_sem_init ( void * semStructure,
int pshared,
int initialValue )

Definition at line 67 of file platform_semaphore.c.

68{
69#ifdef __APPLE__
70 UNUSED(pshared);
71 semaphore_create(mach_task_self(), (semaphore_t *) semStructure,
72 SYNC_POLICY_FIFO, initialValue);
73#else
74 if (sem_init((sem_t *) semStructure, pshared, initialValue) != 0) {
75 perror("sem_init");
76 abort();
77 }
78#endif /* __APPLE__ */
79}
#define UNUSED(x)

References UNUSED.

Referenced by audio_cap_jack_init(), vidcap_testcard2_init(), and video_export_init().

◆ platform_sem_post()

void platform_sem_post ( void * semStructure)

Definition at line 81 of file platform_semaphore.c.

82{
83#ifdef __APPLE__
84 semaphore_signal(*((semaphore_t *) semStructure));
85#else
86 sem_post((sem_t *) semStructure);
87#endif /* __APPLE__ */
88}

Referenced by audio_cap_jack_read(), audio_cap_jack_should_exit(), jack_process_callback(), vidcap_testcard2_thread(), video_export(), and video_export_destroy().

◆ platform_sem_wait()

void platform_sem_wait ( void * semStructure)

Definition at line 90 of file platform_semaphore.c.

91{
92#ifdef __APPLE__
93 semaphore_wait(*((semaphore_t *) semStructure));
94#else
95 int ret = 0;
96 while ((ret = sem_wait((sem_t *) semStructure)) == -1 && errno == EINTR) { }
97 if (ret == -1) {
98 perror("sem_wait");
99 }
100#endif /* __APPLE__ */
101}

Referenced by audio_cap_jack_read(), vidcap_testcard2_grab(), and video_export_thread().