Re: segmentierte Addressierung

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Mon, 14 Feb 2005 10:42:27 +0100 (CET)

Marc Santhoff <M.Santhoff(at)t-online.de> wrote:
> Am Fr, den 11.02.2005 schrieb Oliver Fromme um 17:44:
> > Ich nehme an, Du willst das im Kernel-Kontext für einen
> > Treiber machen, oder? (Aus dem Userland heraus ist es
> > nicht möglich, soviel ich weiß.)
>
> Nein, aus einem User-Programm.
> [...]
> > Wie gesagt, das geht nur aus dem Kernelkontext heraus.
> > Wenn Du den BIOS-Interrupt aus dem Userland heraus auf-
> > rufen willst, mußt Du wohl einen kleinen Stub im Kernel
> > schreiben, der das für Dich macht, und diesen dann aus
> > dem Userland heraus aufrufen. Je nach Kontext kann dafür
> > ein eigener System-call sinnvoll sein, oder auch ein
> > ioctl oder ein sysctl.
>
> Ich hoffe diese Lösung ganz weglassen zu können (via doscmd, da teste
> ich noch), aber wenn's nicht anders geht, schaue ich mir das näher an.

Sich für sowas einen sysctl zu schreiben ist ganz einfach;
das habe ich auch schon in ähnlichen Fällen gemacht.

In Deinem Fall brauchst Du nur eine kleine Funktion, die
beim Abfragen des sysctl aufgerufen wird, und die dann die
entsprechenden vm86-Funktionen aufruft und die Daten umko-
piert.

Das BSD-Copyright wäre vermutlich länger als der Rest des
Treibers. ;-)

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
PI:
int f[9814],b,c=9814,g,i;long a=1e4,d,e,h;
main(){for(;b=c,c-=14;i=printf("%04d",e+d/a),e=d%a)
while(g=--b*2)d=h*b+a*(i?f[b]:a/5),h=d/--g,f[b]=d%g;}
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 14 Feb 2005 - 10:43:13 CET

search this site