Erkennung der Systemschnittstellen bei FreeBSD & Forks

From: Jens Rehsack <rehsack(at)googlemail.com>
Date: Mon, 7 Feb 2011 23:51:27 +0100

Hallo,

beruflich bin ich gerade damit beschäftigt, die Bibliothek libstatgrab
(http://www.i-scream.org/libstatgrab/)
auf AIX, HP-UX, Solaris & Linux zu portieren bzw. für aktuelle
Versionen anzupassen und die jeweiligen
Routinen thread-safe zu machen.

Bei dieser Gelegenheit begann ich privat damit, auch die
*BSD-Unterstützung aufzuräumen und an
aktuelle Versionen anzupassen (der FreeBSD -Support bewegt sich auf
dem Level FreeBSD4/5).

Für NetBSD & OpenBSD gestaltet sich das recht geschmeidig - so
ziemlich alles ist in netten Strukturen
verpackt, die man mit halbwegs brauchbar dokumentierten
sysctl()-Abfragen gefüllt bekommt.
FreeBSD hingegen hat fast überall inzwischen nur noch namentlich
ansprechbare sysctl Routinen
(e.g. vm.swap_stats oder schlimmer vm.stats.vm.v_free_count,
vm.stats.vm.v_inactive_count & co.),
wo der Rückgabewert praktisch undokumentiert ist (sysctl( { 0, 4, *mib
}, ...) hilft da rudimentär)
und auch die Aufrufe sind nicht wirklich gelistet.

Da es von FreeBSD inzwischen aber ewig viele Forks gibt - die
idealerweise auch unterstützt werden
sollten, suche ich hierfür nach Hilfe:
1) Gibt es einen oder mehrere Tests, die ohne den OS-Namen abzufragen
zuverlässig ermitteln, ob
   das Zielsystem ein FreeBSD bzw. Fork (DragonflyBSD, PC-BSD,
DesktopBSD, monowall/FreeNAS, ...)
   ist?
2) Gibt es irgendwo eine Möglichkeit herauszubekommen, welche sysctl's
in welchen FreeBSD-Versionen
   (und Forks) vorhanden sind und welche OUT-Parameter erwartet werden?
3) Gehe ich vielleicht gerade den völlig falschen Weg und gibt es
konformere Methoden, an Systemstatistiken
   zu kommen (e.g. devstat, kvm - jeweils mit NULL-Handles geöffnet).

Vielen Dank im Voraus für jeden Tipp,
Jens

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 07 Feb 2011 - 23:57:46 CET

search this site