device driver - incomprensione sulle chiamate fops
Inviato: giovedì 20 maggio 2010, 16:22
salve!!!
supponiamo che io abbia il mio programma in c che mi apre il device driver in questo modo :
al momento dell'apertura :
1 - mi ritornerà un file descriptor per il device (dev)
2 - apre effettivamente il file/device (caricandolo in memoria);
3 - essendo un device, agirà sulla struct file_operations (invocando le funzioni che ho implementato io nel mio device).
dico giusto fin quì?
ora, la mia funzione per esempio è :
chi gli passa quei valori di *inode e *file? se li prende "da solo" ?
saluti
supponiamo che io abbia il mio programma in c che mi apre il device driver in questo modo :
Codice: Seleziona tutto
static int dev;
dev=open("/dev/strmod", O_RDWR);
if (dev==-1) {
perror("String Module Not Loaded");
return -1;
}
1 - mi ritornerà un file descriptor per il device (dev)
2 - apre effettivamente il file/device (caricandolo in memoria);
3 - essendo un device, agirà sulla struct file_operations (invocando le funzioni che ho implementato io nel mio device).
dico giusto fin quì?
ora, la mia funzione per esempio è :
Codice: Seleziona tutto
static int my_open(struct inode *inode, struct file *file) {
//printk("String Device Opened %d\n", 2);
int *count;
count = kmalloc(sizeof(int), GFP_USER);
if (count == NULL) {
return -1;
}
*count = 0;
file->private_data = count;
return 0;
}
saluti