| Version 16 (modified by , 17 years ago) (diff) |
|---|
Création de l'exemple SplitMsg
Allez dans un nouveau répertoire pour y créer des fichiers.
Description des deux tâches
Dans le nouveau répertoire, créez un répertoire 'src' et allez dedans.
Créez un fichier producer.task contenant:
TaskModel(
'producer',
ports = { 'output' : MwmrOutput(32) },
impls = [
SwTask('prod_func',
stack_size = 2048,
sources = ['producer.c'])
] )
Créez un fichier consumer.task contenant:
TaskModel(
'consumer',
ports = { 'input' : MwmrInput(32) },
impls = [
SwTask('cons_func',
stack_size = 2048,
sources = ['consumer.c'])
] )
Implémentation des deux tâches
Toujours dans 'src',
dans producer.c, mettez:
#include <srl.h>
#include "producer_proto.h"
FUNC(prod_func)
{
srl_mwmr_t output = GET_ARG(output);
char buf[32] = "...World";
srl_log_printf(NONE, "Producer : Hello...\n");
srl_mwmr_write(output, buf, 32);
}
dans consumer.c, mettez:
#include <srl.h>
#include "consumer_proto.h"
FUNC(cons_func)
{
srl_mwmr_t input = GET_ARG(input);
char buf[32];
srl_mwmr_read(input, buf, 32);
srl_log_printf(NONE, "Consumer : %s\n\n", buf);
}
On vient de créer deux modèles de tâches (décris dans les fichiers .task, et leurs implémentations.
Fichier de description DSX/L
Revenez dans le répertoire le l'application (donc le répertoire parent de src).
Créez un fichier de description pour DSX, pour celui-ci, choisissez vous-même un nom explicite.
Ce fichier est le fichier de description DSX et sera nommé comme tel par la suite.
Collez dedans le texte suivant:
#!/usr/bin/env python
from dsx import *
# Partie 1 : définition du TCG (Graphe des Tâches et des Communications)
fifo0 = Mwmr('fifo0', 32, 4)
tcg = Tcg(
Task('prod0', 'producer',
{'output':fifo0} ),
Task('cons0', 'consumer',
{'input':fifo0} ),
)
# Partie 2 : génération du code exécutable sur station de travail POSIX
posix = Posix()
tcg.generate(posix)
Important: La ligne #!/usr/bin/env python doit être la première ligne du fichier.
Rendez ce fichier exécutable
$ chmod +x le_nom_de_fichier
