2012-07-31 3 views
5

Kann mir bitte jemand helfen, die richtigen Header-Dateien für die copy_from_user Methode zu bekommen?In welcher Kopfzeile ist copy_from_user() deklariert?

Ich habe ein paar der Include-Header gefunden, die ich brauche, aber mein Compiler sagt immer, dass sie nicht gefunden werden. Ich verwende CentOS auf meinem Rechner. Ich habe versucht, yum installieren verschiedene Kernel-Header und devel-Pakete, aber immer noch kein Glück.

Gibt es ein spezielles Segment, das ich in meinem gcc Befehl hinzufügen muss? Alles, was ich im Internet finde, sagt mir nur, wie ich die Methode anwenden soll, aber nicht wirklich, wie ich überhaupt Zugang dazu bekommen kann.

+0

Codieren Sie ein Kernelmodul? Wenn Sie das tun, brauchen Sie eine bestimmte Möglichkeit, es zu kompilieren .... –

Antwort

11

Ich nehme an, Sie entwickeln ein Kernel-Modul, weil außerhalb versucht copy_from_user zu verwenden wäre sinnlos. So oder so, im Kernel verwenden:

#include <linux/uaccess.h> 

bearbeiten: wenn Aufbau ein Kernel-Modul ist das, was Sie wollen, können Sie in diesem Hello World Linux Kernel Module suchen. Insbesondere könnte der Makefile-Teil für Sie interessant sein (suchen Sie nach obj-m).

+0

Ich lerne immer noch, wie ich gehe, also habe keine Angst, es mir zu erklären, wie ich bin 5. Ich bemerkte, dass include-Anweisung aber das und "asm/uaccess.h" sagen beide, dass sie nicht gefunden werden können, nachdem sie versucht haben zu kompilieren. Ist das Entwickeln eines Kernel-Moduls ein anderer Prozess als einfach nur eine Datei namens programname.c zu kompilieren? Ich schreibe ein Programm, das jemandes Headerdateien/Methoden verwendet. Sie speichern eine wichtige Information als "Char __user * buf". Ich versuche, diesen Puffer zu verwenden und es in einer verketteten Liste zu speichern, um später zu verwenden, aber da es ein Zeiger ist, kann ich es nicht bekommen, mehrere verschiedene Puffer zu speichern. – user1566813

+0

Ja, die Entwicklung eines Kernel-Moduls unterscheidet sich sehr von der Entwicklung einer regulären Anwendung. Einer der Hauptgründe für die Entwicklung eines Kernelmoduls ist das Schreiben eines Gerätetreibers (um reale Hardware mit zu steuern). Wenn Sie versuchen, eine reguläre Anwendung (d. H. Eine mit einer 'main()' Funktion) zu entwickeln, sollten Sie nicht erwarten können, dass Sie Code verwenden können, der die so genannten "copy_from_user" - oder "__user" -notierten Zeiger verwendet. – Giel

Verwandte Themen