pulseaudio/src
Daniel Mack 542fa468c2 Mac OS X: add semaphore implementation
On Wed, Sep 16, 2009 at 11:57:04PM +0200, Lennart Poettering wrote:
> On Wed, 16.09.09 15:15, Daniel Mack (daniel@caiaq.de) wrote:
>
> > +    s = pa_xnew(pa_semaphore, 1);
> > +    MPCreateSemaphore(UINT_MAX, value, &(s->sema));
> > +    pa_assert(s->sema != 0);
>
> Hmm, I'd prefer if the ret val of MPCreateSemaphore() would be checked
> here.
>
> Also I find it a bit weird checking for s->sema, though not
> initializing it to 0 in the beginning. If the call actually failed,
> then the assert will check uninitialized memory. Also, comparing
> pointers with 0 sucks. That should be NULL.
>
> Given that this can not realisitically fail, only in OOM or OOM-like
> situations in which case we abort anyway it mght be enough just writing:
>
> pa_assert_se(MPCreateSemaphore(UINT_MAX, value, &s->sema) == 0);
>
> (Assuming that success is signalled by retval == 0 on MacOSX)
>
> > +void pa_semaphore_free(pa_semaphore *s) {
> > +    pa_assert(s);
> > +    MPDeleteSemaphore(s->sema);
>
> Same here.
>
> > +    pa_xfree(s);
> > +}
> > +
> > +void pa_semaphore_post(pa_semaphore *s) {
> > +    pa_assert(s);
> > +    MPSignalSemaphore(s->sema);
>
> And here.
>
> > +}
> > +
> > +void pa_semaphore_wait(pa_semaphore *s) {
> > +    pa_assert(s);
> > +    /* should probably check return value (-ve is error), noErr is ok. */
> > +    MPWaitOnSemaphore(s->sema, kDurationForever);
>
> And here.

Ok, done. See the patch below.

Daniel

>From 26df2fbae6d9215a3ae084876fb5f79e4d9cf4f0 Mon Sep 17 00:00:00 2001
From: Kim Lester <kim@dfusion.com.au>
Date: Wed, 16 Sep 2009 09:23:39 +0800
Subject: [PATCH] Mac OS X: add semaphore implementation
2009-10-31 01:34:04 +01:00
..
daemon git: ignore kde related files 2009-10-30 05:20:00 +01:00
modules use pa_fopen_cloexec() where applicable 2009-10-30 04:54:19 +01:00
pulse use pa_fopen_cloexec() where applicable 2009-10-30 04:54:19 +01:00
pulsecore Mac OS X: add semaphore implementation 2009-10-31 01:34:04 +01:00
tests stripnul: initialize 'found' bool properly (llvm-clang-analyzer) 2009-09-08 23:53:56 +02:00
utils use cloexec wrappers wherever applicable 2009-10-30 03:32:38 +01:00
.gitignore git: ignore kde related files 2009-10-30 05:20:00 +01:00
depmod.py remove remaining $ 2008-06-18 22:38:32 +02:00
Makefile.am buil-sys: fix build w/o DBus 2009-10-12 21:21:26 +02:00
map-file libpulse: introduce pa_context_get_tile_size() call 2009-10-28 23:26:48 +01:00