gem-graph-server/include/base.h

90 lines
2.7 KiB
C
Raw Normal View History

2021-06-08 20:15:47 +02:00
//=-------------------------------------------------------------------------=//
2021-06-09 14:40:23 +02:00
// base definition //
2021-06-08 20:15:47 +02:00
// //
// 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 <https://www.gnu.org/licenses/>. //
//=-------------------------------------------------------------------------=//
#include <stdbool.h>
2021-06-09 14:40:23 +02:00
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
#include <malloc.h>
2021-06-11 15:11:06 +02:00
#include <string.h>
2021-06-11 17:39:34 +02:00
#include <stdlib.h>
2021-06-16 00:09:35 +02:00
#include <sys/param.h>
2021-06-09 14:40:23 +02:00
#define BASE_H
2021-06-08 20:15:47 +02:00
struct {
int x;
int y;
int z;
} typedef Arrow_t;
2021-06-08 20:15:47 +02:00
struct {
size_t size;
Arrow_t *space;
} typedef ArrowArray_t; //XXX
2021-06-08 20:15:47 +02:00
struct {
size_t size;
int *space;
} typedef IntArray_t;
2021-06-11 15:11:06 +02:00
#define LOGMSG "[%s]"
#define printLog(FORMAT, ...) printf(LOGMSG " " FORMAT, __func__, ##__VA_ARGS__)
/* -------------------------------------------------------------------------- */
2021-06-11 12:23:16 +02:00
//
// Scheduler
//
struct {
IntArray_t *globalDrawingSpace;
IntArray_t *transitionsTree;
ArrowArray_t *arrowList;
int nmaxThread;
int nmaxCycles;
int ruleRadius;
2021-06-11 12:52:36 +02:00
pthread_t *id;
2021-06-15 23:26:27 +02:00
bool pleaseStop;
2021-06-14 18:33:13 +02:00
} typedef Scheduler_t;
2021-06-11 12:23:16 +02:00
/* -------------------------------------------------------------------------- */
2021-06-11 14:30:26 +02:00
2021-06-11 12:23:16 +02:00
//
// Local threads
//
2021-06-11 16:50:38 +02:00
struct Center_t {
int x;
int y;
int z;
struct Center_t *next;
struct Center_t *prev;
2021-06-11 12:23:16 +02:00
} typedef Center_t;
struct {
2021-06-11 16:50:38 +02:00
pthread_t *id;
Center_t *localWorkAreaCenter;
2021-06-15 23:26:27 +02:00
bool pleaseStop;
bool terminated;
int returnValue;
} typedef Worker_t;