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.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,216b18d81cce4f75 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-06-02 16:04:39 PST Path: archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!skynet.be!dispose.news.demon.net!demon!peernews!peer.cwci.net!newspeer.clara.net!news.clara.net!news5-gui.server.ntli.net!ntli.net!news6-win.server.ntlworld.com.POSTED!not-for-mail From: "chris.danx" Newsgroups: comp.lang.ada References: <3B183CB8.3EE396E7@engineer.com> <_M3S6.8957$HL5.1284411@news6-win.server.ntlworld.com> <3B1958AD.F7D7A5CC@engineer.com> Subject: Re: Ada Microkernel? X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4522.1200 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 Message-ID: Date: Sun, 3 Jun 2001 00:00:26 +0100 NNTP-Posting-Host: 62.253.8.31 X-Complaints-To: abuse@ntlworld.com X-Trace: news6-win.server.ntlworld.com 991522771 62.253.8.31 (Sat, 02 Jun 2001 23:59:31 BST) NNTP-Posting-Date: Sat, 02 Jun 2001 23:59:31 BST Organization: ntlworld News Service Xref: archiver1.google.com comp.lang.ada:8028 Date: 2001-06-03T00:00:26+01:00 List-Id: > What confounds me is how to provide system level calls for any > C applications. Say I write my awesome Ada microkerenel, obviously > I need to provide a C api if I want to use the GNU tools. You don't need to have system level calls specifically for C applications, you have system level calls for all applications (not just C ones). There's nothing special about C applications that means you have to have a special format for them. If i were you I'd make the API Ada styled (strongly typed and well defined! None of this "words are all you need" that you see in C based OS api's. The message passing systems used in microkernels (just one way of communication possible) seem to work well. I've decided to take the standard message passing system(mailboxes) and try something that i've been told has been done in QNX and Beos. The idea is like pattern matching from functional languages and a bit like dynamic typing. It goes like this. Module A sends a message to B to do X. X can have more than one form, dependant on the types passed in. You check the types of the items passed in (each item must have a type descriptor accompanying it) and X gives control to the appropriate routine. If no routine is found you get an error (haven't really got a good idea about how to handle this, technically it should never happen but that doesn't mean it will never happen). You might want to consider something like this in an OS if your doing one. You could extend it to the API if you liked too. (which is why i mentioned it). Chris Campbell