diff options
author | Daniel Mack <daniel@caiaq.de> | 2009-10-19 12:48:00 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-10-31 01:34:04 +0100 |
commit | 542fa468c26c5035485dc73392c57c222183b510 (patch) | |
tree | e1c21a7b21799272d5ac79c3230343d1316492e8 /src/pulsecore/core-subscribe.h | |
parent | b04fe9b516160f92d016a8bb81a431c74cac2ecd (diff) |
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
Diffstat (limited to 'src/pulsecore/core-subscribe.h')
0 files changed, 0 insertions, 0 deletions