comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: Linux Calls
Date: 31 Jul 2003 20:26:17 +0100
Date: 2003-07-31T20:26:17+01:00	[thread overview]
Message-ID: <x7vel064hwm.fsf@smaug.pushface.org> (raw)
In-Reply-To: W2ZVa.147$jp.52@newsread4.news.pas.earthlink.net

"Jeremy Smith" <jeremy.t.smith@mindspring.com> writes:

> I have two tasks, built using gnat 3.13p, running under Linux, Red Hat 8.
> The idea was to have one task processing and performing cyclic tasks
> continuously while the other task waits for commands and responds to them
> right away.  To accomplish this I am want to run the command receipt task at
> a higher priority than the continuous processing task.  My problem is that
> the commands are coming over an IPC message queue, so when the command
> receipt task calls msgget (visible via pragma Import) it blocks but does it
> outside the Ada RTS.  The continuous processing task never gains context
> because the Ada RTS doesn't know the command receipt task has blocked
> pending receipt of the next command.
> 
> Anybody know a way to wrap a blocking OS call so that the other lower
> priority Ada tasks can play until it returns?

It sounds as though you're using the "fsu" version of the runtime
system - you need the version that uses native threads. On recent
editions of GNAT, & I'm pretty sure on 3.13p, you get a choice between
fsu & native; check out the installation instructions. (as far as I
can remember, it involves switching the symlinks for adainclude,
adalib in ...lib/gcc-lib/i686-pc-linux-gnu/2.8.1/ .

The binary I have is called gnat-3.13p-i686-pc-linux-gnu-bin.tar.gz



  reply	other threads:[~2003-07-31 19:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-31  0:05 Linux Calls Jeremy Smith
2003-07-31 19:26 ` Simon Wright [this message]
2003-08-01  5:32   ` David Holm
replies disabled

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