
2. Die Messages
Die Inhalt einer message ist jeweils ein struct, z.B:
struct message {
long type;
char text[BUFSIZE];
};
In der Wahl des Formats ist man frei, allerdings muss man darauf achten,
dass der erste Eintrag immer ein long ist. Dieser wird nämlich als
Type der Nachricht interpretiert. Näheres dazu kann der manpage zu
msgsnd(2) entnommen werden.
3. Die Queue-Strukturen im Kernel
Den Aufbau im Kern beschreibt folgendes Bild:

4. Der Zugriff auf die Queue-Strukturen vom Kernel aus
Das klingt ja alles ganz gut, hat aber einen kleine Hacken.
Der ganze Mechanismus liegt als Kernel-Modul vor, das bei Bedarf eingeladen
wird. Leider haben die Entwickler bei Sun das ganze als reinen User-Level
Kommunikations-Mechanismus konzipert, d.h. es ist nicht moeglich, von einem
anderen Kernelmodul (nämlich unserem) auf die Queue-Strukturen zuzugreifen.
Wir mussten also erst einiges an den Sourcen zu den Queues ändern
und dann sogar den gesamten Kernel neu kompilieren. Damit ist es nicht
mehr möglich, unsere Implementierung einfach auf einem anderen Rechner
zu benutzen (Schade).