Moinsen Leute,
ist eventuell eine etwas spezielle Frage, doch ich stelle jene einfach mal.
Und zwar habe ich einen Treiber für eine digitale I/O Karte geschrieben, welcher Signale via MessageQueue an ein mögliches user-Programm übergibt (also nicht der übliche Weg via "signal").
Dazu besteht die Notwendigkeit, dass das user-Programm dem Modul selbst einen Pointer aus dem userspace übergibt, an dessen Stelle dann das Modul über die MessageQueue die jeweilige Nachricht schreiben kann. Dies geschieht über ioctl.
OK, alles kein Thema - klappt bestens.
Aus Langeweile habe ich mir nun mal die Adressen des Pointers im userspace und im kernelspace ausgeben lassen (printf/printk). Und siehe da - die Adressen unterscheiden sich immer um genau 30h.
WIESO zum Henker? Ist das ein Fehler von printf(), respektive printk()?
Ich kann es mir nicht erklären. Zumal eine Ausgabe eines übergebenen Characters in beiden Fällen absolut identsich ist. Das bedeutet also, dass beide Adressen eigentlich gleich sind. Jedoch sagt die Ausgabe der Adressen was anderes.
Grüße
Torsten