delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/09/27/06:23:18

From: Hans-Bernhard Broeker <broeker AT physik DOT rwth-aachen DOT de>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: An other question about locking functions in classes
Date: 27 Sep 2000 09:53:38 GMT
Organization: Aachen University of Technology (RWTH)
Lines: 35
Message-ID: <8qsg32$fu2$1@nets3.rz.RWTH-Aachen.DE>
References: <8qsakc$9ak$1 AT news DOT germany DOT net>
NNTP-Posting-Host: acp3bf.physik.rwth-aachen.de
X-Trace: nets3.rz.RWTH-Aachen.DE 970048418 16322 137.226.32.75 (27 Sep 2000 09:53:38 GMT)
X-Complaints-To: abuse AT rwth-aachen DOT de
NNTP-Posting-Date: 27 Sep 2000 09:53:38 GMT
Originator: broeker@
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Martin Czamai <M DOT Czamai AT peak-system DOT com> wrote:
> class Class
> {   ...
>    static void my_ISR();
>    static END_OF_FUNCTION(my_ISR);
>    ...
> }

*No* access is a bit strong. You'll not have access to non-static
member variables, and you can't call non-static methods, but that's
all the limitation.

This is by definition of the C++ language. It's what 'static' is
about: it makes members and methods that belong to the class as such,
not a particular object (an 'instance', in C++ speak).

Remember that the IRQ of the CPU has no idea whatsoever about classes
or objects. 

Any member variables used by that IRQ handler will have to be made
'static', too, and also protected against paging.

> The static keyword is necessary to make it possible to lock my_ISR in
> memory, which is required since my_ISR is a interrupt service routine that
> must NOT be swapped out to disk. 

I'ld advise to seriously re-think the whole plan of having the ISR be
a member of a class. It'll be a whole lot easier to implement as a
standalone function, and all its data standalone global or static
variables.

C++ and low-level programming of this type don't mix all that well.
-- 
Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de)
Even if all the snow were burnt, ashes would remain.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019