From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,ca992fd796299db9 X-Google-Attributes: gid103376,public From: Tucker Taft Subject: Re: Suitability of ada environments for systems development Date: 1999/07/08 Message-ID: <3784D40B.9F6E805D@averstar.com>#1/1 X-Deja-AN: 498727495 Content-Transfer-Encoding: 7bit Sender: news@inmet.camb.inmet.com (USENET news) X-Nntp-Posting-Host: houdini.burl.averstar.com References: <7lis9r$oil$1@usenet01.srv.cis.pitt.edu> <7ljcfr$nq2$1@nnrp1.deja.com> <7lk09t$rmo$1@usenet01.srv.cis.pitt.edu> Content-Type: text/plain; charset=us-ascii Organization: AverStar (formerly Intermetrics) Burlington, MA USA Mime-Version: 1.0 Newsgroups: comp.lang.ada Date: 1999-07-08T00:00:00+00:00 List-Id: John Duncan wrote: > > ... > What I am interested in is finding a retargetable standard library in Ada, > perhaps like a runtime kernel like someone already suggested. Essentially all Ada compilers have a run-time library that is structured into layers. The top layer is generally written entirely in Ada, and is target independent. The next layer down is also usually written in Ada, but tends to be more target dependent. There may be additional intermediate layers, each more or less target dependent. Often the lowest layer is a standard O/S or real-time kernel of some sort, and may be a Commercial Off-The-Shelf (COTS) product. However, there are also plenty of "bare board" Ada run-time systems. In this case, the lowest layers are effectively acting as an O/S or kernel. The interface between target-independent and target-dependent code is often carefully designed to be simple and minimal, to ease retargeting to new kernels/O.S.s. In our run-time, this retargeting interface is roughly at the "Posix threads" level; the primary abstractions are threads, mutexes, and (optionally timed) binary semaphores. GNAT has an interface like this that they call GNULLI I believe. As far as using Ada tasks and protected types, we do use them in our run-time, but only in the upper layers. The lower layers are implementing these constructs. The upper layers can make use of them to implement even higher level capabilities. We happen to implement protected types at a lower level than tasks, so we have a middle layer that implements rendezvous using protected objects. Other layerings are clearly possible. > > What I do not want is some sort of operating-system specific solution, even > to the extent of the scheduling of tasks. I am merely interested in whether > someone has come up with implementations of the System.Interrupts and the > like to describe a lot of hardware. This is because I plan to implement a > sort of operating system myself, and I don't want the language system to be > making too many assumptions about what the operating system will do. > Afterward, I will probably commission a port of whatever language I use for > the purpose of writing applications on this operating system. > > I am not exactly sure what the OS will look like, I just know that I want it > to be reliable and efficient from the ground up, and I believe that can be > done in Ada. It can also be done in other languages. The quality of the > programmers and the tools they use are both important. > > But, like many things in this field, I await investors in order to find out > if my plans can come to fruition. In that, I do not know if I will actually > need anything, but I do know that a survey of the tools will help. :) > > -John > -- -Tucker Taft stt@averstar.com http://www.averstar.com/~stt/ Technical Director, Distributed IT Solutions (www.averstar.com/tools) AverStar (formerly Intermetrics, Inc.) Burlington, MA USA