From 4219ae2888627e16a5d0db9c76582da972d46913 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Fri, 11 Jun 2021 14:02:40 +0200 Subject: [PATCH 1/3] Local worker --- src/localworker.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/localworker.c b/src/localworker.c index e69de29..ccbe6c1 100644 --- a/src/localworker.c +++ b/src/localworker.c @@ -0,0 +1,20 @@ +//=-------------------------------------------------------------------------=// +// Local worker module // +// // +// Copyright © 2021 The Gem-graph Project // +// // +// This file is part of gem-graph. // +// // +// This program is free software: you can redistribute it and/or modify // +// it under the terms of the GNU Affero General Public License as // +// published by the Free Software Foundation, either version 3 of the // +// License, or (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU Affero General Public License for more details. // +// // +// You should have received a copy of the GNU Affero General Public License // +// along with this program. If not, see . // +//=-------------------------------------------------------------------------=// From 2924428bdf4b17b844e7461f4f0076c257923789 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Fri, 11 Jun 2021 14:07:13 +0200 Subject: [PATCH 2/3] Local worker --- include/localworker.h | 17 +++++++++++++++++ src/localworker.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/include/localworker.h b/include/localworker.h index 3ba3250..c491b26 100644 --- a/include/localworker.h +++ b/include/localworker.h @@ -23,4 +23,21 @@ #include "../include/base.h" #endif +pthread_t *WorkerInit(SchedulerParams_t *parameters); +// -------------------------------------------------------------------------- // +// Scheduler destructor function // +// -------------------------------------------------------------------------- // +static inline int WorkerDestroy(pthread_t *schedThread) +{ + free(schedThread); + return 0; +} + +// -------------------------------------------------------------------------- // +// Scheduler wait function // +// -------------------------------------------------------------------------- // +static inline void WorkerWait(pthread_t *schedThread) +{ + pthread_join(*schedThread, NULL); +} diff --git a/src/localworker.c b/src/localworker.c index ccbe6c1..c57f463 100644 --- a/src/localworker.c +++ b/src/localworker.c @@ -18,3 +18,38 @@ // You should have received a copy of the GNU Affero General Public License // // along with this program. If not, see . // //=-------------------------------------------------------------------------=// + +#include "../include/base.h" + +static void *LittleWorker(void *parameters); + +/* -------------------------------------------------------------------------- */ + +// -------------------------------------------------------------------------- // +// Scheduler init function // +// -------------------------------------------------------------------------- // +pthread_t *WorkerInit(SchedulerParams_t *parameters) +{ + parameters->id = (pthread_t*) malloc(sizeof(pthread_t)); + pthread_create(parameters->id, NULL, LittleWorker, parameters); + return parameters->id; +} + +// -------------------------------------------------------------------------- // +// Scheduler thread main function // +// -------------------------------------------------------------------------- // +static void *LittleWorker(void *params) +{ + SchedulerParams_t *parameters = (SchedulerParams_t*) params; + int a = 4; + + + for (int i = 0; i < 45000; i++) { + for (int j = i; j < 45000; j++) { + a = (a + (long)parameters->id) * i * j; + } + } + + printf("thread %d\n", a); + return NULL; +} From c1e8c4cc9ab6964ec49263ef3c085abeba217684 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Fri, 11 Jun 2021 14:14:45 +0200 Subject: [PATCH 3/3] Tests files --- src/test/localworker.c | 22 ++++++++++++++++++++++ src/test/scheduler.c | 22 ++++++++++++++++++++++ src/test/server.c | 22 ++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 src/test/localworker.c create mode 100644 src/test/scheduler.c create mode 100644 src/test/server.c diff --git a/src/test/localworker.c b/src/test/localworker.c new file mode 100644 index 0000000..3b87380 --- /dev/null +++ b/src/test/localworker.c @@ -0,0 +1,22 @@ +//=-------------------------------------------------------------------------=// +// Local worker tests // +// // +// Copyright © 2021 The Gem-graph Project // +// // +// This file is part of gem-graph. // +// // +// This program is free software: you can redistribute it and/or modify // +// it under the terms of the GNU Affero General Public License as // +// published by the Free Software Foundation, either version 3 of the // +// License, or (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU Affero General Public License for more details. // +// // +// You should have received a copy of the GNU Affero General Public License // +// along with this program. If not, see . // +//=-------------------------------------------------------------------------=// + +#include "../localworker.c" diff --git a/src/test/scheduler.c b/src/test/scheduler.c new file mode 100644 index 0000000..6764c2b --- /dev/null +++ b/src/test/scheduler.c @@ -0,0 +1,22 @@ +//=-------------------------------------------------------------------------=// +// Scheduler tests // +// // +// Copyright © 2021 The Gem-graph Project // +// // +// This file is part of gem-graph. // +// // +// This program is free software: you can redistribute it and/or modify // +// it under the terms of the GNU Affero General Public License as // +// published by the Free Software Foundation, either version 3 of the // +// License, or (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU Affero General Public License for more details. // +// // +// You should have received a copy of the GNU Affero General Public License // +// along with this program. If not, see . // +//=-------------------------------------------------------------------------=// + +#include "../scheduler.c" diff --git a/src/test/server.c b/src/test/server.c new file mode 100644 index 0000000..80f92af --- /dev/null +++ b/src/test/server.c @@ -0,0 +1,22 @@ +//=-------------------------------------------------------------------------=// +// Server tests // +// // +// Copyright © 2021 The Gem-graph Project // +// // +// This file is part of gem-graph. // +// // +// This program is free software: you can redistribute it and/or modify // +// it under the terms of the GNU Affero General Public License as // +// published by the Free Software Foundation, either version 3 of the // +// License, or (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU Affero General Public License for more details. // +// // +// You should have received a copy of the GNU Affero General Public License // +// along with this program. If not, see . // +//=-------------------------------------------------------------------------=// + +#include "../server.c"