[vlc-devel] [PATCH] Use Mach semaphores on Mac OS X

Jan-Hinrich Fessel oskar at fessel.org
Thu May 6 20:02:40 CEST 2010


Am 06.05.2010 um 16:59 schrieb Juho Vähä-Herttua:

> On 6.5.2010, at 16.15, Juho Vähä-Herttua wrote:
>> There's one problem with the patch. It calls for VLC_THREAD_ASSERT  
>> that calls vlc_thread_fatal on debug, which in turn calls  
>> strerror_r, which fails because the return value is not errno value  
>> but instead kern_return_t. ILEoo also mentioned that after  
>> semaphore_destroy the condition should be val == KERN_SUCCESS  
>> instead of != check.
>
> Last patch was complete crap: in addition to the above,  
> semaphore_destroy didn't reference the pointer, error code path of  
> vlc_sem_post didn't return a value correctly on non-Mac platform.  
> Second attempt included, I used EINVAL for all error cases since it  
> was easy and VLC_THREAD_ASSERT is already there.

Couldn't you just use the standard semaphore calls as defined in  
<semaphore.h> resp. <sys/semaphore.h>
where it states:

__BEGIN_DECLS
int sem_close(sem_t *);
int sem_destroy(sem_t *);
int sem_getvalue(sem_t * __restrict, int * __restrict);
int sem_init(sem_t *, int, unsigned int);
sem_t * sem_open(const char *, int, ...);
int sem_post(sem_t *);
int sem_trywait(sem_t *);
int sem_unlink(const char *);
int sem_wait(sem_t *) __DARWIN_ALIAS_C(sem_wait);
__END_DECLS


#endif  /* _SYS_SEMAPHORE_H_ */




More information about the vlc-devel mailing list