Changes between Version 7 and Version 8 of SplitMsg


Ignore:
Timestamp:
Feb 10, 2008, 6:57:44 PM (16 years ago)
Author:
Nicolas Pouillon
Comment:

Update new DSX/L API

Legend:

Unmodified
Added
Removed
Modified
  • SplitMsg

    v7 v8  
    33Allez dans un nouveau répertoire pour y créer des fichiers.
    44
    5 == Fichier de description DSX ==
     5== Description des deux tâches ==
    66
    7 Pour celui-ci, choisissez vous-même un nom explicite.
    8 Ce fichier est le '''fichier de description DSX''' et sera nommé comme tel par la suite.
     7Dans le nouveau répertoire, créez un répertoire `'src'` et allez dedans.
    98
    10 Collez dedans le texte suivant:
    11 
     9Créez un fichier `producer.task` contenant:
    1210{{{
    13 #!/usr/bin/env python
    14 
    15 from dsx import *
    16 
    17 # Partie 1
    1811producer_model = TaskModel(
    1912        'producer',
    20         outfifos = ['output'],
     13        ports = { 'output' : MwmrOutput(32) },
    2114        impl = [
    2215                SwTask('prod_func',
    23                            stack_size = 256,
     16                           stack_size = 1024,
    2417                           sources = ['producer.c'])
    2518        ] )
     19}}}
    2620
     21Créez un fichier `consumer.task` contenant:
     22{{{
    2723consumer_model = TaskModel(
    2824        'consumer',
    29         infifos = ['input'],
     25        ports = { 'input' : MwmrInput(32) },
    3026        impl = [
    3127                SwTask('cons_func',
    32                            stack_size = 256,
     28                           stack_size = 1024,
    3329                           sources = ['consumer.c'])
    3430        ] )
    35 
    36 # Partie 2
    37 fifo0 = Mwmr('fifo0', 4, 4)
    38 
    39 tcg = Tcg(
    40         Task('prod0', producer_model,
    41                  {'output':fifo0} ),
    42         Task('cons0', consumer_model,
    43                  {'input':fifo0} ),
    44         )
    45 
    46 # Partie 3
    47 posix = Posix()
    48 tcg.generate(posix)
    49 TopMakefile(posix)
    5031}}}
    5132
    52 Important: La ligne {{{#!/usr/bin/env python}}} doit être la ''première ligne'' du fichier.
     33== Implémentation des deux tâches ==
    5334
    54 Rendez ce fichier exécutable
    55 {{{
    56 $ chmod +x le_nom_de_fichier
    57 }}}
     35Toujours dans `'src'`,
    5836
    59 == Fichier producer.c ==
    60 
    61 Dans {{{producer.c}}}, mettez:
     37dans {{{producer.c}}}, mettez:
    6238
    6339{{{
     
    7046        char buf[32] = "...World";
    7147        srl_log_printf(NONE, "Producer : Hello...\n");
    72         srl_mwmr_write(output, buf, 8);
     48        srl_mwmr_write(output, buf, 32);
    7349}
    7450}}}
    7551
    76 == Fichier consumer.c ==
    77 
    78 Dans {{{consumer.c}}}, mettez:
     52dans {{{consumer.c}}}, mettez:
    7953
    8054{{{
     
    8660        srl_mwmr_t input = GET_ARG(input);
    8761        char buf[32];
    88         srl_mwmr_read(input, buf, 8);
     62        srl_mwmr_read(input, buf, 32);
    8963        srl_log_printf(NONE, "Consumer : %s\n\n", buf);
    9064}
    9165}}}
     66
     67On vient de créer deux modèles de tâches (décris dans les fichiers `.task`, et leurs implémentations.
     68
     69== Fichier de description DSX ==
     70
     71Revenez dans le répertoire le l'application (donc le parent de `src`).
     72
     73Créez un fichier de description pour DSX, pour celui-ci, choisissez vous-même un nom explicite.
     74
     75Ce fichier est le '''fichier de description DSX''' et sera nommé comme tel par la suite.
     76
     77Collez dedans le texte suivant:
     78
     79{{{
     80#!/usr/bin/env python
     81
     82from dsx import *
     83
     84# Création du TCG
     85
     86fifo0 = Mwmr('fifo0', 32, 4)
     87
     88tcg = Tcg(
     89        Task('prod0', 'producer',
     90                 {'output':fifo0} ),
     91        Task('cons0', 'consumer',
     92                 {'input':fifo0} ),
     93        )
     94
     95# Génération de code
     96
     97posix = Posix()
     98tcg.generate(posix)
     99}}}
     100
     101Important: La ligne {{{#!/usr/bin/env python}}} doit être la ''première ligne'' du fichier.
     102
     103Rendez ce fichier exécutable
     104{{{
     105$ chmod +x le_nom_de_fichier
     106}}}