public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Chris Gray <gray@acunia.com>
To: bartv@redhat.com
Cc: nickg@redhat.com, ecos-discuss@sourceware.cygnus.com
Subject: Re: [ECOS] No binary semaphore in C API?
Date: Thu, 29 Mar 2001 11:55:00 -0000	[thread overview]
Message-ID: <3AC2E765.7331A9CF@acunia.com> (raw)
In-Reply-To: <200103281329.f2SDT3b05686@sheesh.cambridge.redhat.com>

Bart Veer wrote:

> Arguably there should be an assert in Cyg_Binary_Semaphore::post(),
>
>     CYG_ASSERT( false == state, "Posting to unlocked binary semaphore");
>
> However I am not sure that there is sufficient agreement on the
> general semantics of binary semaphores to make that assertion valid.
> Some people might expect multiple posts to be a no-op. IMO the absence
> of completely clear semantics for a synchronization primitive is a
> good argument for removing that primitive completely.

As I understand it, the theoretical semantics of a binary semaphore is that

you "cannot" post to it twice.  To the theoretician, the question of what
happens
when something that can't happen happens is purely hypothetical.

In the system I'm currently working on (which uses ThreadX, but may one day

move to eCos), we have a macro assertSemaphore which is most often used in
the form "assertSemaphore(&s,1)" -- in other words to check that binary
semaphore semantics are being respected. So maybe such an optional runtime
check is all you need to add to counting semaphores to make them usable as
binary ones.

Regards

Chris


  parent reply	other threads:[~2001-03-29 11:55 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-16 12:01 Grant Edwards
2001-03-19 13:42 ` Jonathan Larmour
2001-03-26  3:53   ` Nick Garnett
2001-03-26  7:12     ` Fabrice Gautier
2001-03-26 11:37     ` Grant Edwards
2001-03-27  2:00       ` Nick Garnett
2001-03-27  5:32         ` Grant Edwards
2001-03-28  5:29         ` Bart Veer
2001-03-28  6:45           ` Sergei Organov
2001-03-28  7:38             ` Grant Edwards
2001-03-28  7:39             ` Bart Veer
2001-03-28 10:01               ` Sergei Organov
2001-03-28 11:05                 ` Grant Edwards
2001-03-29 11:51                   ` Sergei Organov
2001-03-29 11:49                     ` Grant Edwards
2001-03-28 10:01               ` Jonathan Larmour
2001-03-29 11:55           ` Chris Gray [this message]
2001-03-29 19:33             ` Bart Veer
2001-03-29 20:50               ` Grant Edwards
2001-03-30  2:22               ` Sergei Organov
2001-03-30  6:54                 ` Grant Edwards
2001-03-30  7:42                   ` Sergei Organov
2001-03-30  5:39 Rosimildo daSilva

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3AC2E765.7331A9CF@acunia.com \
    --to=gray@acunia.com \
    --cc=bartv@redhat.com \
    --cc=ecos-discuss@sourceware.cygnus.com \
    --cc=nickg@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).