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 e69de29..c57f463 100644 --- a/src/localworker.c +++ b/src/localworker.c @@ -0,0 +1,55 @@ +//=-------------------------------------------------------------------------=// +// 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 . // +//=-------------------------------------------------------------------------=// + +#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; +} 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"