elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas con Proc en el kernel de linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con Proc en el kernel de linux  (Leído 2,025 veces)
kaostias

Desconectado Desconectado

Mensajes: 19


Mi método da menos excepciones ergo es mejor


Ver Perfil
Problemas con Proc en el kernel de linux
« en: 24 Octubre 2013, 19:16 pm »

Buenas, estoy haciendo un módulo que sea una lista de enteros que se actualice cada vez que se actualiza una entrada en proc en concreto /proc/mimod. El caso es que compila y lo instalo en el kernel, y cuando quiero utilizar un comando, (Sólo acepta dos, add y remove), de la forma

Código:
echo add 10 > /proc/mimod

Estalla(NullPointerException). No sé muy bien cómo funciona aún. Aquí asigno los callback

Código:
static int addProcEditor(void){
    clipboard = (char *)vmalloc( BUFFER_LENGTH );
    if (!clipboard) {
      ret = -ENOMEM;
    } else {
      memset( clipboard, 0, BUFFER_LENGTH );
      proc_entry = create_proc_entry("mimod",0777, NULL);
      if (proc_entry == NULL) {
        ret = -ENOMEM;
        vfree(clipboard);
        printk(KERN_INFO "modlist: No puedo crear la entrada en proc\n");
      } else {
        posicionactual=0;
       [glow=red,2,300] proc_entry->read_proc = procWritten;
        proc_entry->write_proc = procIsRead;[/glow]
        printk(KERN_INFO "modlist: Cargado el Modulo.\n");
      }
    }
    return 0;
}

Aquí hago las lecturas y escrituras:

Código:
//Reconoce el cambio del proc y ejecuta este programa
int procWritten( struct file *punterofichero, const char __user *bufferusuario,
unsigned long longitud, void *data){
  char* str;
  int espaciodisponible = (BUFFER_LENGTH-posicionactual)+1;

  if (longitud > espaciodisponible) {
    printk(KERN_INFO "mimod: el buffer esta lleno!\n");
    return -ENOSPC;
  }
  if (copy_from_user( &str[0], bufferusuario, longitud )) {
    return -EFAULT;
  }
  clipboard[longitud] = 0;
  int num;
  int i = reconocedor(clipboard,&num);
  switch(i){
  case 1://add
 add(num);
 break;
  case 2://remove
 myremove(num);
 break;
  }

  return longitud;

}
//Escribe en proc lo que deseemos
int procIsRead( char *buffer, char **bufferlocation, off_t offset,
                   int buffer_lenghth, int *eof, void *data )

{
  int len;

  if (offset > 0) {
    /* hemos llegado al final */
    *eof = 1;
    len =0;
  } else {
 len = cats(buffer);
 int num;
  }
  return len;
}

Cuando va a utilizar cats (lo único que hace es copiar una lista al buffer, peta) y cuando tiene que añadir también. No sé muy bien qué falla. ¿Alguna idea? Lo que puedo suponer es que la cadena recibida no se pasa bien o algo así, pero no tengo ni idea.

Gracias


« Última modificación: 24 Octubre 2013, 19:20 pm por kaostias » En línea

- ¡Éste código sin documentar es un galimatías!
- Es tuyo, de hace 3 semanas
- ¡Es una obra maestra aunque esté sin documentar! ¿Qué decías que hace?
kaostias

Desconectado Desconectado

Mensajes: 19


Mi método da menos excepciones ergo es mejor


Ver Perfil
Re: Problemas con Proc en el kernel de linux
« Respuesta #1 en: 29 Octubre 2013, 20:30 pm »

Tenía un par de problemas con punteros, nada importante, gracias de todas formas. Si a alguien le interesa la resolución la cuelgo.


En línea

- ¡Éste código sin documentar es un galimatías!
- Es tuyo, de hace 3 semanas
- ¡Es una obra maestra aunque esté sin documentar! ¿Qué decías que hace?
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Compilacion de Linux Kernel
Tutoriales - Documentación
..sR. aDiKtO.. 4 16,499 Último mensaje 27 Noviembre 2005, 21:47 pm
por kfault
compilar kernel linux?
GNU/Linux
flacc 1 2,134 Último mensaje 12 Septiembre 2012, 07:01 am
por arthusu
Listar conexiones de red usando /proc
GNU/Linux
desikoder 1 1,823 Último mensaje 15 Agosto 2014, 19:05 pm
por A.I.
Duda con Proc en Fasm
ASM
crack81 2 2,837 Último mensaje 28 Enero 2016, 20:00 pm
por crack81
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines