Forum Programmation.c RTAI Shared Memory

Posté par  .
Étiquettes : aucune
0
28
mai
2007
Salut,

Je viens de passer ma soirée a tenter de faire un partage de memoire en rtai et pas moyen il y sans doute quelque chose qui m'échappe. Pouvez vous me dire ce que vous en pensez ?

je laisse le code coté rtai, je pense pas que le probleme vienne du code coté linux.
merci !


#include <linux/kernel.h>
#include <linux/module.h>
#include <rtai.h>
#include <rtai_sched.h>
#include <rtai_shm.h>


#define PERIOD 1000000 //1ms


static RT_TASK t1;
RTIME time, t;
int *ptr = NULL;
int *test = NULL;
int i = 0;

static void tache_tr(int C){
while(i<10){
printk("%d\n",i);
test = memset(ptr, 0xDEADBEEF, sizeof(ptr));
printk("test : %X\n",*test);
rt_task_wait_period();
i++;
}
}

int init_module(void){

ptr = rtai_kmalloc(101, 4*sizeof(int));
if (ptr == 0)
printk("Erreur kmalloc\n");



rt_set_periodic_mode();
time = start_rt_timer(nano2count(PERIOD/4));

// Créer la tâche de temps réel.
rt_task_init(&t1, (void *)tache_tr, 1, 512, 1, 0, 0);

// La rendre périodique.
rt_task_make_periodic(&t1, rt_get_time()+1000*time, nano2count(1000000000));

return 0;
}

void cleanup_module(void){
rt_task_delete(&t1);
stop_rt_timer();
rtai_kfree(101);

return;
}
  • # Modif

    Posté par  . Évalué à 1.

    Ah et bien si le probleme vient du code coté linux, le maloc ne marche pas !


    #include <stdio.h>
    #include <fcntl.h>
    #include <rtai_shm.h>

    //gcc -o e3user e3user.c -I /usr/realtime/include



    int main(int argc, char **argv){
    int *ptr=NULL;

    ptr = rtai_malloc(101, 128);
    if (ptr == 0){
    printf("Erreur malloc\n");
    return 0;
    }


    printf("%X\n",*ptr);

    rtai_free(101,ptr);
    return 0;
    }
    • [^] # Re: Modif

      Posté par  . Évalué à 2.

      si je peut me permettre une remarque
      ptr = rtai_malloc(101, 128);
      pourquoi 128 qui n'est pas 4*sizeof(int) et donc si tu alloue plus d'un coté que ce qui est alloué de l'autre (kmalloc) cela me parait normal que le malloc ne marche pas non ?
      • [^] # Re: Modif

        Posté par  . Évalué à 1.

        oui désolé j'ai oublié de remettre 4*sizeof(int), c'était pour tester, mais ca ne vient pas de la.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.