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,fe5641bca012dada X-Google-Attributes: gid103376,public From: matthew_heaney@acm.org (Matthew Heaney) Subject: Re: help about handling interrupts Date: 1998/04/07 Message-ID: #1/1 X-Deja-AN: 341616417 Content-Transfer-Encoding: 8bit References: <3528B9E0.6F0F@bipa162.bi.ehu.es> <3529047A.44EE08B8@cl.cam.ac.uk> Content-Type: text/plain; charset=ISO-8859-1 Organization: Network Intensive Mime-Version: 1.0 Newsgroups: comp.lang.ada Date: 1998-04-07T00:00:00+00:00 List-Id: In article <3529047A.44EE08B8@cl.cam.ac.uk>, Markus Kuhn wrote: >Igor Pascual Sagastagoitia wrote: >> >> I am learning ADA95 and I am searching for an example of attaching a >> procedure when an interrupts rises. >> I read the RM95 but I dont understand it too well because of my >> language. >> I am programming under GNAT 3.10 for a Linux platform. > >Like many of those hardware related questions, this is more a matter >of your operating system than a matter of Ada. Therefore you should >look into the Linux kernel first how interrupt handling is >done there and not into the RM. > >User processes cannot directly handle interrupts under Linux. >If you want to write an interrupt handler yourself, you have to >do this in a loadable kernel module. You can write loadable kernel >modules in Ada just like you can do this in C. You have to call a >kernel function at module load time that registers your Ada >procedure as an interrupt handler, and then the Linux kernel >will call your Ada procedure whenever this interrupt comes in. I don't understand this response. In Ada 95, you attach protected procedure of a protected object to an interrupt. Section 19.6, INTERRUPT HANDLING, in Norm Cohen's book is dedicated to this very topic. No, the OS doesn't make any difference. The syntax for specifying an interrupt handler in Ada is the same for all platforms. Basically, you declare a protected object, and use pragma Attach_Handler to designate a protected procedure as the interrupt handler. See also pragma Interrupt_Handler and package Ada.Interrupts.