= Création de l'exemple SplitMsg = Créez un nouveau répertoire pour l'application (nommé par exemple `'splitmsg'`). == Description des deux tâches == Dans ce nouveau répertoire, créez un répertoire nommé `'src'` et entrez-y. 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 le répertoire `'src'`, créez un fichier nommé `'producer.c'`, et saisissez-y le code suivant : {{{ #include #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 un autre fichier nommé `'consumer.c'`, saisissez le code suivant: {{{ #include #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); } }}} Bilan : deux modèles de tâches (décrits dans les fichiers `.task`) sont créés, ainsi que leurs implémentations respectives (décrites dans les fichiers `.c`). == Fichier de description DSX/L == Retournez dans le répertoire de l'application (donc le répertoire parent de `'src'`). Créez un fichier python, pour lequel vous pouvez vous-même choisir un nom (par exemple `'splitmsg'`). Ce fichier représente le '''fichier de description DSX''', et sera nommé comme tel par la suite. Saisissez dans ce fichier le texte suivant : {{{ #!/usr/bin/env python import dsx # Partie 1 : définition du TCG (Graphe des Tâches et des Communications) fifo0 = dsx.Mwmr('fifo0', 32, 4) tcg = dsx.Tcg( dsx.Task('prod0', 'producer', {'output':fifo0} ), dsx.Task('cons0', 'consumer', {'input':fifo0} ), ) # Partie 2 : génération du code exécutable sur station de travail POSIX tcg.generate(dsx.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 }}}