cambiamo la domanda (forse quella di prima è un pò troppo complicata).
supponiamo che io abbia il mio programma in c che mi apre il device driver in questo modo :
codice:
static int dev;
dev=open("/dev/strmod", O_RDWR);
if (dev==-1) {
perror("String Module Not Loaded");
return -1;
}
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 è :
codice:
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;
}
chi gli passa quei valori di *inode e *file? se li prende "da solo" ?
ri-saluti