|
Abstract: . . . verr`a associata al comando close delle operazioni su files. static int epp_close(struct inode* ino, struct file* filep) { MOD_DEC_USE_COUNT; 4 Page 7 return 0; } 3.3 Scrittura sul driver Questa procedura viene associata alla procedura write utilizzata dallu- tente. ` E importante notare che non occorrono particolari comandi per set- tare delle permission per accedere alle . . . . . . compilazione del driver che contiene le procedure viste nel capitolo pre- cedente deve essere fatta con il comando gcc -c /usr/src/ linux /include -DMODULE -D__KERNEL__ -Wall -O2 eppio.c Oltre alle definizioni obbligatorie per i moduli del kernel (-DMODULE e -D KERNEL ) si consiglia di dare un livello completo per i warning (- Wall). Lultimo flag (-O2) `e necessario per poter utilizzare le macro inline inb e outb. Una volta compilato, il . . . . . . Scrittura di moduli (driver) sotto Linux 2.4.x P r o v v i s o r i o Ing. El. Dipl. ETHZ Roberto Bucher 1 Scuola universitaria professionale della Svizzera Italiana Dipartimento di informatica ed elettrotecnica 21 maggio . . . . . . Scrittura di moduli (driver) sotto Linux 2.4.x P r o v v i s o r i o Ing. El. Dipl. ETHZ Roberto Bucher 1 Scuola universitaria professionale della Svizzera Italiana Dipartimento di informatica ed elettrotecnica 21 maggio 2006 . . . . . . write(fd,buffer,1,NULL); read(fd,buffer,1,NULL); printf("Valore letto : %x\n",buffer[0]); close(fd); } 9 Page 12 Appendice A Il driver completo #include " linux /module.h" #include "asm/io.h" static int epp_open(struct inode* ino, struct file* filep) { MOD_INC_USE_COUNT; return 0; } static int epp_close(struct inode* ino, struct file* filep) { MOD_DEC_USE_COUNT; . . . --2409,5,241,2370,12047
|