42/philosophers.git
20 months agoImplement seat_philosophers
Lukas Jiriste [Thu, 28 Mar 2024 13:56:54 +0000 (14:56 +0100)]
Implement seat_philosophers

Thanks to the change of how the program keeps track of time
it is possible to set the "last_eaten" member of philo in advance
(to zero - the start) without slowing the seating.

Thanks to this, no delay is necessary before the program checks whether
philos died of hunger. (It was needed in old branch, because
philosophers initialized their own time at the start of their
existance, and the check could happen before the time was set)

20 months agoAdd initialization of some members of philos
Lukas Jiriste [Thu, 28 Mar 2024 13:49:02 +0000 (14:49 +0100)]
Add initialization of some members of philos

20 months agoFix allocation of wrong size
Lukas Jiriste [Thu, 28 Mar 2024 11:01:32 +0000 (12:01 +0100)]
Fix allocation of wrong size

The way the allocation was written, it allocated space for pointer
instead of the structure pointed to. This has been corrected.

20 months agoFix logic bug
Lukas Jiriste [Thu, 28 Mar 2024 10:54:47 +0000 (11:54 +0100)]
Fix logic bug

20 months agoImplement conditional compilation
Lukas Jiriste [Thu, 28 Mar 2024 10:40:14 +0000 (11:40 +0100)]
Implement conditional compilation

Before this commit, compilation would stop at file parsing.c
with error (warning + -Werror) caused by -Wtype-limits.
Conditional compilation is added so that the offending if statement
is not present, when not needed.

The #if directive could have only been set up around the problematic
if statement. The 42 Norm however forbids using macros anywhere but
the global scope.

This made me write the the affected functions twice, which then broke
the 5 function limit per .c file. Hence this commit is quite large
for such a small change.

20 months agoImplement initialization, cleanup and mutex struct
Lukas Jiriste [Thu, 28 Mar 2024 09:55:38 +0000 (10:55 +0100)]
Implement initialization, cleanup and mutex struct

The mutex struct is implemented because pthread_mutex_destroy
produces undefined behaviour when supplied with uninitialized mutex.
The struct holds information whether the mutex has been initialized
succesfully.

The header file philo.h has also been filled with declarations of
functions used in main so that Makefiles compiles every file to object.
This is done for easier checking of compile errors.

20 months agoRemove unnecessary include
Lukas Jiriste [Thu, 28 Mar 2024 08:38:54 +0000 (09:38 +0100)]
Remove unnecessary include

20 months agoImplement parsing of input
Lukas Jiriste [Thu, 28 Mar 2024 08:33:12 +0000 (09:33 +0100)]
Implement parsing of input

20 months agoAdd Makefile (doesn't compile yet)
Lukas Jiriste [Tue, 26 Mar 2024 10:10:42 +0000 (11:10 +0100)]
Add Makefile (doesn't compile yet)

20 months agoChange the context of the time variables
Lukas Jiriste [Tue, 26 Mar 2024 08:55:55 +0000 (09:55 +0100)]
Change the context of the time variables

This change is preliminary as the code that handles this is yet to be
written. I decided to do this because I think it will not add any
complexity but will make the code more portable (as useconds_t needs
not be huge this way)?

20 months agoCreate outline of the solution
Lukas Jiriste [Tue, 26 Mar 2024 08:13:48 +0000 (09:13 +0100)]
Create outline of the solution

20 months agoAdd .gitignore as an initial commit
Lukas Jiriste [Fri, 22 Mar 2024 09:49:13 +0000 (10:49 +0100)]
Add .gitignore as an initial commit