Changes between Version 10 and Version 11 of SplitMsg
- Timestamp:
- Feb 20, 2008, 9:18:41 AM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SplitMsg
v10 v11 3 3 Allez dans un nouveau répertoire pour y créer des fichiers. 4 4 5 == Description des deux tâches==5 == Fichier de description DSX == 6 6 7 Dans le nouveau répertoire, créez un répertoire `'src'` et allez dedans. 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. 8 9 9 Créez un fichier `producer.task` contenant: 10 Collez dedans le texte suivant: 11 10 12 {{{ 11 TaskModel( 13 #!/usr/bin/env python 14 15 from dsx import * 16 17 # Partie 1 18 producer_model = TaskModel( 12 19 'producer', 13 ports = { 'output' : MwmrOutput(32) },20 outfifos = ['output'], 14 21 impl = [ 15 22 SwTask('prod_func', 16 stack_size = 1024,23 stack_size = 256, 17 24 sources = ['producer.c']) 18 25 ] ) 26 27 consumer_model = TaskModel( 28 'consumer', 29 infifos = ['input'], 30 impl = [ 31 SwTask('cons_func', 32 stack_size = 256, 33 sources = ['consumer.c']) 34 ] ) 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) 19 50 }}} 20 51 21 Créez un fichier `consumer.task` contenant: 52 Important: La ligne {{{#!/usr/bin/env python}}} doit être la ''première ligne'' du fichier. 53 54 Rendez ce fichier exécutable 22 55 {{{ 23 TaskModel( 24 'consumer', 25 ports = { 'input' : MwmrInput(32) }, 26 impl = [ 27 SwTask('cons_func', 28 stack_size = 1024, 29 sources = ['consumer.c']) 30 ] ) 56 $ chmod +x le_nom_de_fichier 31 57 }}} 32 58 33 == Implémentation des deux tâches==59 == Fichier producer.c == 34 60 35 Toujours dans `'src'`, 36 37 dans {{{producer.c}}}, mettez: 61 Dans {{{producer.c}}}, mettez: 38 62 39 63 {{{ … … 46 70 char buf[32] = "...World"; 47 71 srl_log_printf(NONE, "Producer : Hello...\n"); 48 srl_mwmr_write(output, buf, 32);72 srl_mwmr_write(output, buf, 8); 49 73 } 50 74 }}} 51 75 52 dans {{{consumer.c}}}, mettez: 76 == Fichier consumer.c == 77 78 Dans {{{consumer.c}}}, mettez: 53 79 54 80 {{{ … … 60 86 srl_mwmr_t input = GET_ARG(input); 61 87 char buf[32]; 62 srl_mwmr_read(input, buf, 32);88 srl_mwmr_read(input, buf, 8); 63 89 srl_log_printf(NONE, "Consumer : %s\n\n", buf); 64 90 } 65 91 }}} 66 92 67 On vient de créer deux modèles de tâches (décris dans les fichiers `.task`, et leurs implémentations.68 93 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 python81 82 from dsx import *83 84 # Partie 185 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 # Partie 296 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écutable104 {{{105 $ chmod +x le_nom_de_fichier106 }}}