From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Interfacing to C: multithreaded callbacks
Date: Wed, 13 Jun 2007 10:11:30 +0200
Date: 2007-06-13T10:08:52+02:00 [thread overview]
Message-ID: <m8lrp9shht63$.w8hlpj4jf0ve$.dlg@40tude.net> (raw)
In-Reply-To: 1181678190.757347.67290@x35g2000prf.googlegroups.com
On Tue, 12 Jun 2007 12:56:30 -0700, Maciej Sobczak wrote:
> The problem is when the C library creates additional threads and calls
> the client back in the context of those threads. ARM says nothing (?)
> about the relaion between Ada tasks and system threads. If the
> relation is 1:1 (ie. tasks are implemented as system threads), then
> the whole scheme might work just fine, provided that there is no task-
> specific data that Ada runtime expects and will not find. On the other
> hand, if the relation between tasks and threads is not 1:1, we will
> just enjoy undefined behavior.
Yes, when Ada tasks aren't mapped onto system threads, then system calls
potentially might block all Ada tasks. This includes whatever POSIX layer.
> Is there any water-proof implementation pattern for such problems?
> Consider both the general case and then GNAT as the target Ada
> compiler on POSIX systems.
You can marshal messages from C callbacks. With busy waiting and one
publisher - one subscriber, you don't need anything but shared memory to
implement that.
However, when talking about POSIX targets, I would assume Ada tasks being
POSIX threads.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2007-06-13 8:11 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-12 19:56 Interfacing to C: multithreaded callbacks Maciej Sobczak
2007-06-13 8:11 ` Dmitry A. Kazakov [this message]
2007-06-13 15:23 ` Maciej Sobczak
2007-06-13 15:55 ` Dmitry A. Kazakov
2007-06-13 19:57 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox