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)
| | |-+  Modulo en Linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Modulo en Linux  (Leído 4,991 veces)
ddmmvv12

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Modulo en Linux
« en: 1 Abril 2011, 03:10 am »

Hola necesito hacer 2 modulos en linux que hagan lo siguiente

El objetivo de la práctica consiste en la implementación de dos módulos cargables en el núcleo de Linux. Dichos módulos A y B
deberán realizar las siguientes acciones:
1. Ambos módulos han de mostrar en el momento de inserción y de extracción un mensaje informativo mediante la función
del núcleo printk () con los siguientes datos:
• El instante de inserción y de extracción (Dato que se puede obtener de 3 formas distintas:
• Para ello se puede consultar la variable xtime(kernel/sched.c:52 volatile struct timeval xtime. struct timeval esta
definido en include/linux/time.h:12.
• Utilizar la macro CURRENT_TIME
• Invocar la función void do_gettimeofday(struct timeval *tv) que ofrece precisión en micro segundos.
• El pid del proceso invocante de la orden correspondiente (insmod o rmmod).
Para ello habrá que acceder a la estructura que mantiene la información sobre el proceso padre del proceso actual. El
proceso actual será el propio insmod o rmmod. Al proceso actual se puede acceder con la macro current definida en
include/linux/sched.h:323 que es un puntero a la estructura del proceso (struct task_struct *). En dicha estructura
son de interés, para este caso, las entradas siguientes:
int pid; /* pid del proceso */
struct task_struct * p_pptr; /* puntero al proceso padre */
El tipo struct task_struct está definido en include/linux/sched.h:174
2. Además de imprimir la información anterior, el modulo A deberá implementar una función pública del tipo yo-he-estadoaquí, que muestre, al igual que en caso anterior, en qué instante ha sido invocada, y qué proceso (pid). A su vez, deberá
registrar en una variable interna, cual ha sido la última visita recibida, y mostrar su información cuando el modulo A sea
extraído del núcleo cleanup_module.
3. El módulo B deberá visitar al modulo A, invocando a la función yo-he-estado-aquí, tanto al ser insertado en el núcleo, como
al ser extraído del mismo.

Pueden ayudarme, darme ideas , consejos, documentación

Gracias !!!


En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Modulo en Linux
« Respuesta #1 en: 1 Abril 2011, 09:04 am »

Hola

Aquí nadie te va a hacer la tarea, postea el code que llevas hecho hasta ahora y te podrán ayudar, yo no te puedo orientar porque no tengo idea del kernel de linux, lo siento. Pon lo que tengas hasta ahora. Puedes buscar en google las funciones que debes utilizar para orientarte y tener una idea de lo que tienes que hacer.

Saludos


En línea

Breakbeat como forma de vida
Leber


Desconectado Desconectado

Mensajes: 338


"Fracta, non verba"


Ver Perfil WWW
Re: Modulo en Linux
« Respuesta #2 en: 1 Abril 2011, 14:49 pm »

ddmmvv12, pon lo que tengas hecho, y se te ayudará.

De todos modos, eso es parte de un libro? Es que me interesa ese tipo de temario.
En línea

"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
ddmmvv12

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Modulo en Linux
« Respuesta #3 en: 1 Abril 2011, 17:37 pm »

Hola. la idea no es que me hagan la tarea, lo que pasa es que nunca he hecho un programa en C para Linux y menos para el Kernel. Lo que necesito es que me orienten o me brinden funciones que me puedan servir o una buena documentación

para satu, es una practica de la universidad

Gracias
En línea

D4RIO


Desconectado Desconectado

Mensajes: 1.004


U N I X


Ver Perfil WWW
Re: Modulo en Linux
« Respuesta #4 en: 1 Abril 2011, 18:04 pm »

Por un lado, lo que dicen es correcto, esto no es para que te hagan la tarea, pero por otro, lo que solicitas es documentación, así que te facilito algo, y nos posteas el código y lo que has resuelto, de manera que lo que te ayudamos se vuelva una ayuda para todos cuando pongas lo que has aprendido, y de donde.

http://casidiablo.net/desarrollar-compilar-modulo-linux/
http://es.tldp.org/Manuales-LuCAS/doc-progmodlinux/doc-progmodlinux-html/
http://rdebug.blogspot.com/2010/08/programar-modulos-para-el-kernel-en-c.html
http://www.wikilearning.com/tutorial/guia_de_programacion_de_modulos_del_nucleo_linux-llamadas_al_sistema/9762-9
http://www.ubuntu-es.org/node/49313
http://www.wikilearning.com/tutorial/guia_de_programacion_de_modulos_del_nucleo_linux-hola_mundo/9762-2

Dedica tiempo a leer, a ejercitar, y retribuye con lo que aprendiste

Saludos!
En línea

OpenBSDFreeBSD
ddmmvv12

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Modulo en Linux
« Respuesta #5 en: 1 Abril 2011, 20:12 pm »

Gracias por la ayuda, me doy cuenta que es básicamente igual que programar C en Windows

pongo una parte del codigo, podrian ayudarme en la ultima sentencia . cual es el indicador para variable tipo "struct timespec" que es lo que me pide en la compilacion

GRACIAS !!


#include <linux/module.h>     

#include <linux/init.h>       

#include <linux/kernel.h>     

#include <linux/sched.h>       
static int hola(void)

{

     printk(KERN_INFO "Hola, el modulo esta siendo cargado.\n");
     printk(KERN_INFO "El user space del proceso es '%s'\n", current->comm);
     printk(KERN_INFO "El PID es  %i\n", current->pid);
     printk("la hora es * , CURRENT_TIME)
   


     return 0;     
1
En línea

D4RIO


Desconectado Desconectado

Mensajes: 1.004


U N I X


Ver Perfil WWW
Re: Modulo en Linux
« Respuesta #6 en: 2 Abril 2011, 19:54 pm »

Usa las etiquetas de código o el menú de código personalizado para hacer más legible tu código.

Por otra parte, en la última línea escribías:
Código
  1.    printk("la hora es * , CURRENT_TIME)
  2.  
Esto no tiene ';' al final, ni termina las comillas, supongo que será un error. Reemplazandolo y dejandolo como lo indico debajo, compila correctamente. Deberías agregarle información para modinfo (por ejemplo: MODULE_AUTHOR, MODULE_DESCRIPTION).

Código
  1. #include <linux/module.h>
  2. #include <linux/init.h>
  3. #include <linux/kernel.h>
  4. #include <linux/sched.h>
  5.  
  6. static int hola(void)
  7. {
  8.  
  9.     printk(KERN_INFO "Hola, el modulo esta siendo cargado.\n");
  10.     printk(KERN_INFO "El user space del proceso es '%s'\n", current->comm);
  11.     printk(KERN_INFO "El PID es  %i\n", current->pid);
  12.     printk("la hora es *" , CURRENT_TIME);
  13.  
  14.  
  15.  
  16.     return 0;    
  17. }
En línea

OpenBSDFreeBSD
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modulo RTF to HTML
Programación Visual Basic
Krnl64 2 1,720 Último mensaje 26 Mayo 2006, 04:29 am
por Krnl64
modulo estadisticas web en php
PHP
nyarko32 1 4,038 Último mensaje 18 Septiembre 2006, 11:52 am
por pisagatos
Cargar modulo del kernel Linux. « 1 2 »
ASM
0xDani 11 8,017 Último mensaje 27 Noviembre 2012, 16:01 pm
por 0xDani
[Perl] Problema al instalar módulo en Linux
Scripting
Danick 1 1,841 Último mensaje 21 Octubre 2013, 17:27 pm
por Danick
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines