[pulseaudio-discuss] [PATCH 2/4] Mac OS X: add semaphore implementation
Lennart Poettering
lennart at poettering.net
Wed Sep 16 14:57:04 PDT 2009
On Wed, 16.09.09 15:15, Daniel Mack (daniel at 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.
Lennart
--
Lennart Poettering Red Hat, Inc.
lennart [at] poettering [dot] net
http://0pointer.net/lennart/ GnuPG 0x1A015CC4
More information about the pulseaudio-discuss
mailing list