comp.lang.ada
 help / color / mirror / Atom feed
From: "REH" <spamjunk@stny.rr.com>
Subject: Simulating OS semaphore behavior
Date: 25 Aug 2006 08:00:48 -0700
Date: 2006-08-25T08:00:48-07:00	[thread overview]
Message-ID: <1156518048.848919.126340@75g2000cwc.googlegroups.com> (raw)

I am porting some code from VxWorks and Ada 83 to another OS using Ada
95.  VxWorks' has a sempahore API I want to replicate with purely Ada
95 constructs, such as protected types.  The function is semFlush which
basically will release all the tasks currently blocked on the semaphore
but leave it locked, thus any new tasks that attempt to take the
semaphore will block.  I just cannot figure out a simple way to do it.

Abstractly, I want to allow an arbitrary number tasks to wait for a
particular event, and when the event occurs, wake all those tasks.
Thereafter, tasks can again block waiting for the next occurrence.
Something like:

protected type Event is
  entry Wait;
  procedure Signal;
end Event;

Implementing the above for one task seems simple enough, but how would
it been done for an arbitrary number such that the behavior is:
1. Wait's guard is initially false.
2. some tasks call Wait.
3. Signal is called.
4. Wait's guard becomes true.
5. all tasks currently queued on Wait are allowed to continue.
6. Wait's guard becomes false.

Any ideas would be greatly appreciated,

REH




             reply	other threads:[~2006-08-25 15:00 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-25 15:00 REH [this message]
2006-08-25 15:09 ` Simulating OS semaphore behavior Dmitry A. Kazakov
2006-08-25 15:25   ` REH
2006-08-25 17:31   ` Jean-Pierre Rosen
2006-08-26  8:39     ` Dmitry A. Kazakov
2006-08-26 13:34       ` REH
2006-08-26 13:42         ` jimmaureenrogers
2006-08-27 14:00           ` Simon Wright
2006-08-26 20:18         ` Dmitry A. Kazakov
2006-08-26 20:29           ` REH
2006-08-27 17:07             ` Dmitry A. Kazakov
2006-08-27 18:02             ` Simon Wright
2006-08-27 22:28               ` REH
  -- strict thread matches above, loose matches on Subject: below --
2006-08-31 16:24 Anh Vo
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox