- inseriamo il modulo, passandogli il parametro size:

  # insmod sillydev.ko size=128 

  Per vedere il valore dei parametri:

  # cat /sys/module/sillydev/parameters/size
 
  # grep "silly" /proc/devices
  252 silly
  # mknod /dev/silly0 c 252 0
  # echo "test" > /dev/silly0 
  # cat /dev/silly0
  test
  # chmod 666 /dev/silly0

- adesso proviamo "user"
  
  $ ./user /dev/silly0 
  "test1test2"

ssize_t silly_read (struct file * filp, char * buf, size_t count, 
                    loff_t *fops) 
ssize_t silly_write (struct file *filp, const char *buf, size_t count, 
                     loff_t *fops) 

filep: e' il file pointer.
buf: punta allo "user buffer" (e' un pointer user-space).
count: quanti byte devono essere scritti o letti.
fops: la posizione del file che lo "user" sta accedendo. 

copy_from_user
copy_to_user

Sono le due funzioni usate per scambiare dati tra user- e kernel-space.
Le due funzioni non si limitano ad eseguire la copia ma fanno anche controlli
ad esempio sulla validita' dell'indirizzo user-space etc etc. (vedi anche
__copy_from_user e __copy_to_user)

