proc file lese problem
-
Hallo Leute!
Ein Kernel Modul soll ein Procfile erzeugen und der User sollte mittels echo 1234 > /proc/file Daten in dieses Procfile schreiben. Weiters soll es möglich sein die gerade geschriebenen Daten im log auszugeben bzw dann weiterzuverarbeiten(in eine linked list schreiben).
Also wenn ich einmal mit echo 1234 > /proc/file in das file schreibe bekomme ich einen Eintrag im log. Jedoch beim 2ten oder 3ten echo 3456 > proc/file .... bekomm ich keinen Eintrag.Ich habe die Vermutung ich mache was mit den Buffern falsch.
Anbei der Code den ich schon geschrieben habe. Die read und write Funktion des Modules.
Vielleicht kann mir jemand von euch weiterhelfen./* * This function is called when the file is read * * */ int procfile_read(char *buffer, char **buffer_location, off_t offset, int buffer_length, int *eof, void *data) { int ret; printk(KERN_INFO "procfile_read (/proc/%s) called\n", procfs_name); if(offset > 0) { /* finished to read */ ret = 0; } else { /* fill the buffer,return the buffer size */ memcpy(buffer, procfs_buffer, procfs_buffer_size); sprintf(buffer,"%s", procfs_buffer); printk(KERN_INFO "You have entered %s \n", buffer); ret=procfs_buffer_size; } return ret; } /* * This function is called when the file is written * * */ int procfile_write(struct file *file, const char *buffer, unsigned long count, void *data) { printk(KERN_INFO "procfile_write (/proc/%s) called\n", procfs_name); /* get buffer size */ procfs_buffer_size = count; if (procfs_buffer_size > PROCFS_MAX_SIZE) { procfs_buffer_size = PROCFS_MAX_SIZE; } /* Write data to the buffer */ if ( copy_from_user(procfs_buffer, buffer, procfs_buffer_size) ) { return -EFAULT; } return procfs_buffer_size; }
Gruß
Christian