Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
lustre-v6
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
verimag
synchrone
lustre-v6
Commits
1984801f
Commit
1984801f
authored
9 months ago
by
Leandre Lacourt
Browse files
Options
Downloads
Patches
Plain Diff
ajout des start, join, init et reset des taches
parent
55bcd8cb
No related branches found
No related tags found
No related merge requests found
Pipeline
#186326
failed
9 months ago
Stage: build
Stage: test
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
bin/lustre-mt/main.ml
+53
-36
53 additions, 36 deletions
bin/lustre-mt/main.ml
with
53 additions
and
36 deletions
bin/lustre-mt/main.ml
+
53
−
36
View file @
1984801f
...
...
@@ -70,41 +70,59 @@ let main () =
in
List
.
iter
print_task_structs
!
tasks
;
(* fprintf cfile "/* runners */\n";
*let print_task_runners task =
* fprintf cfile "void* %s_runner(void* cd) {\n" task.name;
* fprintf cfile "\t%s_TASK_struct* ts = (%s_TASK_struct*)
cd
" task.name task.name;
* fprintf cfile "
\
twhile
(
1
){
\
n
";
* fprintf cfile "
\
t
\
tSEM_WAIT
(
ts
->
sem_start
);
\
n
";
* fprintf cfile "
\
t
\
t
%
s_step
(
&
ts
->
ctx
);
\
n
" task.name;
* fprintf cfile "
\
t
\
tSEM_SIGNAL
(
ts
->
sem_join
);
\
n
";
* fprintf cfile "
\
t
}
\
n
";
* fprintf cfile "
}
\
n
\
n
"
*in
*List.iter print_task_runners !tasks;
*
*fprintf cfile "
/*
task
Initializers
*/
\
n
";
*let print_task_inits task =
* fprintf cfile "
%
s_TASK_type
%
s_TASK_init
()
{
\
n
" task.name task.name;
* fprintf cfile "
\
t
%
s_TASK_struct
*
ts
=
(
%
s_TASK_struct
*
)
calloc
(
1
,
sizeof
(
%
s_TASK_struct
));
\
n
" task.name task.name task.name;
* fprintf cfile "
\
t
%
s_ctx_init
(
&
ts
->
ctx
);
\
n
" task.name;
* fprintf cfile "
SEM_INIT
(
ts
->
sem_start
,
0
,
1
);
\
n
";
* fprintf cfile "
SEM_INIT
(
ts
->
sem_join
,
0
,
1
);
\
n
";
* fprintf cfile "
pthread_create
(
&
(
ts
->
thr
)
,
NULL
,
%
s_runner
,
ts
);
\
n
" task.name;
* fprintf cfile "
return
(
void
*
)
ts
;
\
n
";
* fprintf cfile "
}
\
n
\
n
"
*in
*List.iter print_task_inits !tasks;
*
*fprintf cfile "
/*
task
resets
*/
\
n
";
*let print_task_resets task =
* fprintf cfile "
void
%
s_TASK_reset
(
%
s_TASK_type
tD
)
{
\
n
" task.name task.name;
* fprintf cfile "
%
s_TASK_struct
*
ts
=
(
%
s_TASK_struct
*
)
tD
;
\
n
" task.name task.name;
* fprintf cfile "
%
s_ctx_reset
(
&
ts
->
ctx
)
\
n
;
" task.name;
* fprintf cfile "
}
\
n
\
n
"
*in
*List.iter print_task_resets !tasks;
*)
fprintf
cfile
"/* runners */
\n
"
;
let
print_task_runners
task
=
fprintf
cfile
"void* %s_runner(void* cd) {
\n
"
task
.
name
;
fprintf
cfile
"
\t
%s_TASK_struct* ts = (%s_TASK_struct*) cd
\n
"
task
.
name
task
.
name
;
fprintf
cfile
"
\t
while(1){
\n
"
;
fprintf
cfile
"
\t\t
SEM_WAIT(ts->sem_start);
\n
"
;
fprintf
cfile
"
\t\t
%s_step(&ts->ctx);
\n
"
task
.
name
;
fprintf
cfile
"
\t\t
SEM_SIGNAL(ts->sem_join);
\n
"
;
fprintf
cfile
"
\t
}
\n
"
;
fprintf
cfile
"}
\n\n
"
in
List
.
iter
print_task_runners
!
tasks
;
fprintf
cfile
"/* task Initializers */
\n
"
;
let
print_task_inits
task
=
fprintf
cfile
"%s_TASK_type %s_TASK_init() {
\n
"
task
.
name
task
.
name
;
fprintf
cfile
"
\t
%s_TASK_struct* ts = (%s_TASK_struct*)calloc(1, sizeof(%s_TASK_struct));
\n
"
task
.
name
task
.
name
task
.
name
;
fprintf
cfile
"
\t
%s_ctx_init(&ts->ctx);
\n
"
task
.
name
;
fprintf
cfile
"
\t
SEM_INIT(ts->sem_start, 0, 1);
\n
"
;
fprintf
cfile
"
\t
SEM_INIT(ts->sem_join, 0, 1);
\n
"
;
fprintf
cfile
"
\t
pthread_create(&(ts->thr), NULL, %s_runner, ts);
\n
"
task
.
name
;
fprintf
cfile
"
\t
return (void*) ts;
\n
"
;
fprintf
cfile
"}
\n\n
"
in
List
.
iter
print_task_inits
!
tasks
;
fprintf
cfile
"/* task resets */
\n
"
;
let
print_task_resets
task
=
fprintf
cfile
"void %s_TASK_reset(%s_TASK_type tD) {
\n
"
task
.
name
task
.
name
;
fprintf
cfile
"
\t
%s_TASK_struct* ts = (%s_TASK_struct*) tD;
\n
"
task
.
name
task
.
name
;
fprintf
cfile
"
\t
%s_ctx_reset(&ts->ctx);
\n
"
task
.
name
;
fprintf
cfile
"}
\n\n
"
in
List
.
iter
print_task_resets
!
tasks
;
fprintf
cfile
"/* task start */
\n
"
;
let
print_task_starts
task
=
fprintf
cfile
"void %s_TASK_START(%s_TASK_type tD) {
\n
"
task
.
name
task
.
name
;
fprintf
cfile
"
\t
%s_TASK_struct* ts = (%s_TASK_struct*) tD;
\n
"
task
.
name
task
.
name
;
fprintf
cfile
"
\t
SEM_SIGNAL(ts->sem_start);
\n
"
;
fprintf
cfile
"}
\n\n
"
in
List
.
iter
print_task_starts
!
tasks
;
fprintf
cfile
"/* task join */
\n
"
;
let
print_task_joins
task
=
fprintf
cfile
"void %s_TASK_JOIN(%s_TASK_type tD) {
\n
"
task
.
name
task
.
name
;
fprintf
cfile
"
\t
%s_TASK_struct* ts = (%s_TASK_struct*) tD;
\n
"
task
.
name
task
.
name
;
fprintf
cfile
"
\t
SEM_WAIT(ts->sem_join);
\n
"
;
fprintf
cfile
"}
\n\n
"
in
List
.
iter
print_task_joins
!
tasks
;
(* fprintf cfile "/* task inputs */\n";
* let print_task_inputs task =
...
...
@@ -112,7 +130,6 @@ let main () =
* task.
* in
* List.iter print_task_inputs !tasks;
*)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment