Re: segmentierte Addressierung

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

Marc Santhoff <M.Santhoff(at)t-online.de> wrote:
> Am Mo, den 14.02.2005 schrieb Oliver Fromme um 10:42:
> > 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.
>
> Klingt als wäre es eine Lösung mit geringem Aufwand. Bei einem Treiber
> erinnere ich dunkel, daß dazu einige Einträge für das System gemacht
> werden müssen, aber was braucht es für einen "sysctl"? Sicher einen
> Eintrag in der Vorlage (src/sys/kern/syscalls.master) und was noch außer
> natürlich der implementierenden Quelle?

Nö, syscall und sysctl sind verschiedene Dinge. In Deinem
Fall ist beides möglich; insgesamt dürfte der Aufwand in
etwa der gleiche sein. Mit einem sysctl bist Du aber etwas
flexibler.

Bei einem syscall müßtest Du in der Tat einen Eintrag in
syscalls.master machen; daraus werden dann verschiedene
andere Dinge generiert. Außerdem brauchst Du dann eine
Stub-Funktion in der libc, über die Du den syscall vom
Userland aus aufrufen kannst. Wie das genau geht, guckst
Du Dir einfach bei einem bestehenden syscall ab, der einen
String ins Userland zurückliefert, z.B. readlink(2) oder
getlogin_r(2). Anschließend kannst Du ein kleines User-
land-Programm schreiben, das Deinen neuen syscall aufruft
und den String nach stdout ausgibt.

Wenn Du es dagegen per sysctl machen willst, brauchst Du
keinen neuen syscall. Du brauchst auch nicht unbedingt ein
Userland-Programm, weil man den String bereits mit dem vor-
handenen sysctl(8)-Tool abfragen kann.

Für die Definition von sysctls gibt es schon eine Reihe von
fertigen Makros. Du müßtest mit SYSCTL_OID einen readonly-
sysctl definieren und einen eigenen String-Handler schreiben
(bei sysctl_handle_string() abgucken). Dieser Handler würde
dann Deine BIOS-Funktion aufrufen.

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.
"C++ is the only current language making COBOL look good."
        -- Bertrand Meyer
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 - 15:15:04 CET

search this site