device driver que no acabo de resolver grrr

A ver, estoy haciendo un device driver que saque A's
El programa es este:
/*----------------------------------*/
/*INCLUDES */
/*----------------------------------*/
#include <linux/config.h>
#include <linux/module.h>
#include <linux/types.h> /*size t*/
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/proc_fs.h>
#include <linux/fcntl.h>
#include <asm/system.h>
#include <asm/uaccess.h>

/*----------------------------------*/
/*DECLARACION DE FUNCIONES DEL BUFFER*/
/*----------------------------------*/
int bufferg4_open(struct inode *inode, struct file *filp);
int bufferg4_release(struct inode *inode, struct file *filp);
ssize_t bufferg4_read(struct file *filp, char *buf, size_t count, loff_t *f_pos);
void cleanup_module(void);

/*----------------------------------*/
/*Estructura de operaciones*/
/*----------------------------------*/

struct file_operations bufferg4_fops = {
read:bufferg4_read,
write:NULL,
open:bufferg4_open,
release:bufferg4_release
};
/*----------------------------------*/
/*Variables Globales del driver*/
/*----------------------------------*/

int memoria_major = 60;
char *aa;

/*----------------------------------*/
/*modulo                      */
/*----------------------------------*/
int init_module(void){

   int result;
   unsigned char xxx;
   result=register_chrdev(memoria_major, "bufferg4", &bufferg4_fops);
   if (result<0){
      printk("<1>No puc obtenir un numero mes gran %d\n", memoria_major);
   }
/*inicializar las letras a*/
   aa=kmalloc(64, GFP_KERNEL);
   xxx='a';
   memset(aa,xxx,64);
   return result;
}

void cleanup_module(void) {
   unregister_chrdev(memoria_major, "bufferg4");
   kfree(aa);
}

int bufferg4_open(struct inode *inode, struct file *filp){
   return 0;
}

int bufferg4_release(struct inode *inode, struct file *filp){
   return 0;
}

ssize_t bufferg4_read(struct file *filp, char *buf, size_t count, loff_t *f_pos) {
   copy_to_user(buf,aa,1);
   return 0;
}



El problema es que cuando uso el programa, me saca simbolos raros en vez de las a que tocaria y no se donde huevos puede estar el fallo, a ver si podeis echarme una mano porque me voy a tirar del puente jajaja

#include <stdio.h>
#include <string.h>
#include <unistd.h>

int main() {
   unsigned char g4_buffer[64];
   unsigned char dummy;
   FILE *filebuffer;
   /*aquí abro el modulo anterior que con mknod le dado bufferg4*/
   filebuffer=fopen("/dev/bufferg4","r");
   /*leo y coloco en g4_buffer 1 caracter*/
   fread(g4_buffer,sizeof(char),1,filebuffer);
   /*escribir la a*/
   printf("\n mostramos 3 a: %s", g4_buffer);
   fclose(filebuffer);
}



PD: Gracias, código identado y arreglado.
Si realmente quieres que miremos ese código, haz el favor de arreglarlo y esas cosas...

Saludos.Ferdy
ya esta identado, sorry, pensaba que al poner el code ya abria quedado bien :)
2 respuestas