2012-07-31 11 views
5

Qualcuno può aiutarmi a ottenere i file di intestazione necessari per il metodo copy_from_user?In quale intestazione è dichiarato copy_from_user()?

Ho trovato alcuni degli header di inclusione di cui ho bisogno, ma il mio compilatore continua a dire che non sono stati trovati. Sto usando CentOS sulla mia macchina. Ho provato yum installando vari header del kernel e sviluppando pacchetti ma ancora senza fortuna.

C'è un segmento speciale che devo aggiungere nel mio comando gcc? Tutto ciò che trovo su Internet mi dice solo come usare il metodo, ma non in realtà come posso accedervi in ​​primo luogo.

+0

Stai codificando un modulo del kernel? Se lo fai, avrai bisogno di un modo specifico per compilarlo .... –

risposta

11

Suppongo che tu stia sviluppando un modulo del kernel, perché al di fuori di questo tentativo di utilizzare copy_from_user non avrebbe senso. In entrambi i casi, l'uso del kernel:

#include <linux/uaccess.h> 

Edit: se costruzione un modulo del kernel è quello che si vuole, si consiglia di guardare a questo Hello World Linux Kernel Module. In particolare, la porzione di makefile potrebbe interessarti (ricerca di obj-m).

+0

Sto ancora imparando mentre vado, quindi non aver paura di spiegarmelo come se fossi 5. Ho notato che includi la dichiarazione ma che e "asm/uaccess.h" mi dicono entrambi che non possono essere trovati dopo aver provato a compilare. Lo sviluppo di un modulo del kernel è un processo diverso dal semplice tentativo di compilare un file programname.c? Sto scrivendo un programma che usa i file/metodi di header di qualcun altro. Stanno memorizzando un'informazione vitale come "char __user * buf". Sto cercando di utilizzare quel buffer e memorizzarlo in un elenco collegato da utilizzare in seguito, ma poiché si tratta di un puntatore, non riesco a farlo per salvare più buffer diversi. – user1566813

+0

Sì, lo sviluppo di un modulo del kernel è molto diverso dallo sviluppo di un'applicazione regolare. Uno dei motivi principali per lo sviluppo di un modulo del kernel è scrivere un driver di dispositivo (per controllare l'hardware reale con). Se stai cercando di sviluppare un'applicazione regolare (ad esempio una con una funzione 'main()') non dovresti aspettarti di poter usare il codice che usa i puntatori annotati 'copy_from_user' o' __user' così com'è. – Giel

Problemi correlati