Changes between Version 7 and Version 8 of SplitMsg
- Timestamp:
- Feb 10, 2008, 6:57:44 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SplitMsg
v7 v8 3 3 Allez dans un nouveau répertoire pour y créer des fichiers. 4 4 5 == Fichier de description DSX==5 == Description des deux tâches == 6 6 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. 7 Dans le nouveau répertoire, créez un répertoire `'src'` et allez dedans. 9 8 10 Collez dedans le texte suivant: 11 9 Créez un fichier `producer.task` contenant: 12 10 {{{ 13 #!/usr/bin/env python14 15 from dsx import *16 17 # Partie 118 11 producer_model = TaskModel( 19 12 'producer', 20 outfifos = ['output'],13 ports = { 'output' : MwmrOutput(32) }, 21 14 impl = [ 22 15 SwTask('prod_func', 23 stack_size = 256,16 stack_size = 1024, 24 17 sources = ['producer.c']) 25 18 ] ) 19 }}} 26 20 21 Créez un fichier `consumer.task` contenant: 22 {{{ 27 23 consumer_model = TaskModel( 28 24 'consumer', 29 infifos = ['input'],25 ports = { 'input' : MwmrInput(32) }, 30 26 impl = [ 31 27 SwTask('cons_func', 32 stack_size = 256,28 stack_size = 1024, 33 29 sources = ['consumer.c']) 34 30 ] ) 35 36 # Partie 237 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 347 posix = Posix()48 tcg.generate(posix)49 TopMakefile(posix)50 31 }}} 51 32 52 Important: La ligne {{{#!/usr/bin/env python}}} doit être la ''première ligne'' du fichier. 33 == Implémentation des deux tâches == 53 34 54 Rendez ce fichier exécutable 55 {{{ 56 $ chmod +x le_nom_de_fichier 57 }}} 35 Toujours dans `'src'`, 58 36 59 == Fichier producer.c == 60 61 Dans {{{producer.c}}}, mettez: 37 dans {{{producer.c}}}, mettez: 62 38 63 39 {{{ … … 70 46 char buf[32] = "...World"; 71 47 srl_log_printf(NONE, "Producer : Hello...\n"); 72 srl_mwmr_write(output, buf, 8);48 srl_mwmr_write(output, buf, 32); 73 49 } 74 50 }}} 75 51 76 == Fichier consumer.c == 77 78 Dans {{{consumer.c}}}, mettez: 52 dans {{{consumer.c}}}, mettez: 79 53 80 54 {{{ … … 86 60 srl_mwmr_t input = GET_ARG(input); 87 61 char buf[32]; 88 srl_mwmr_read(input, buf, 8);62 srl_mwmr_read(input, buf, 32); 89 63 srl_log_printf(NONE, "Consumer : %s\n\n", buf); 90 64 } 91 65 }}} 66 67 On 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 71 Revenez dans le répertoire le l'application (donc le parent de `src`). 72 73 Créez un fichier de description pour DSX, pour celui-ci, choisissez vous-même un nom explicite. 74 75 Ce fichier est le '''fichier de description DSX''' et sera nommé comme tel par la suite. 76 77 Collez dedans le texte suivant: 78 79 {{{ 80 #!/usr/bin/env python 81 82 from dsx import * 83 84 # Création du TCG 85 86 fifo0 = Mwmr('fifo0', 32, 4) 87 88 tcg = Tcg( 89 Task('prod0', 'producer', 90 {'output':fifo0} ), 91 Task('cons0', 'consumer', 92 {'input':fifo0} ), 93 ) 94 95 # Génération de code 96 97 posix = Posix() 98 tcg.generate(posix) 99 }}} 100 101 Important: La ligne {{{#!/usr/bin/env python}}} doit être la ''première ligne'' du fichier. 102 103 Rendez ce fichier exécutable 104 {{{ 105 $ chmod +x le_nom_de_fichier 106 }}}