diff --git a/philo_two/Makefile b/philo_two/Makefile index b183fa6..6f30353 100644 --- a/philo_two/Makefile +++ b/philo_two/Makefile @@ -1,8 +1,20 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: mdenys +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2021/05/20 12:13:10 by mdenys #+# #+# # +# Updated: 2021/05/20 12:16:38 by mdenys ### ########.fr # +# # +# **************************************************************************** # + .PHONY: all clean fclean re SRCS = main.c utilc.c parser.c logic.c messages.c\ prepare_simulation.c old_utilc.c time.c ft_itoa.c\ - ft_strjoin.c + ft_strjoin.c utilc2.c observer.c ft_exit.c SRC_DIR = ./srcs/ diff --git a/philo_two/includes/philo_header.h b/philo_two/includes/philo_header.h index d280ce8..de130e0 100644 --- a/philo_two/includes/philo_header.h +++ b/philo_two/includes/philo_header.h @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* philo_header.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:33 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:21:47 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #ifndef PHILO_HEADER_H # define PHILO_HEADER_H @@ -9,19 +21,18 @@ # include # include # include - # define _SEM_NAME_FORKS "pSemForks" # define _SEM_WRITE_LOCK "write" -typedef struct s_philo_data t_philo_data; +typedef struct s_philo_data t_philo_data; -typedef struct s_all +typedef struct s_all { - int number_of_philosophers; + int nbr_phils; time_t time_to_die; time_t time_to_eat; time_t time_to_sleep; - int number_of_times_each_philosopher_must_eat; + int etarate_meal; time_t start_time; t_philo_data *data_philo; sem_t *write; @@ -29,11 +40,10 @@ typedef struct s_all int opt; } t_all; - -typedef struct s_philo +typedef struct s_philo { - unsigned worked:1; - unsigned can_run_simulation:1; + unsigned worked :1; + unsigned can_run_simulation :1; pthread_t thread; int count_eat; time_t time_to_die; @@ -47,7 +57,7 @@ typedef struct s_philo char *name; } t_philo; -typedef struct s_philo_data +typedef struct s_philo_data { sem_t *sems; t_philo *philors; @@ -62,7 +72,7 @@ int runner(t_all *all); int return_big(int a, int b); int return_less(int a, int b); time_t ft_get_time(void); -void *run_trhead(t_philo *philo); +void *run_trhead(t_philo *philo); int prepare_resources(t_all *all); int check_all_run(t_all *all); void run_simulation(t_all *all); @@ -71,7 +81,7 @@ void messages(t_all *all, t_philo *philo, char *str); void cycle(t_philo *philo); void ft_msleep(time_t interval_ms); void my_usleep(long time); -void ft_exit(t_all *all); +int ft_exit(t_all *all, int ret); char *ft_itoa(int n); char *ft_strjoin(char const *s1, char const *s2); sem_t *reopen_sem(const char *name, int value); @@ -80,4 +90,5 @@ size_t ft_strlcpy(char *dst, const char *src, size_t size); size_t ft_strlcat(char *dst, const char *src, size_t size); int ft_strlen(char *str); void get_data_for_philo(t_all *all); +int run_observer(t_all *all); #endif diff --git a/philo_two/obj/ft_exit.o b/philo_two/obj/ft_exit.o new file mode 100644 index 0000000..ad040fc Binary files /dev/null and b/philo_two/obj/ft_exit.o differ diff --git a/philo_two/obj/ft_itoa.o b/philo_two/obj/ft_itoa.o index 74b3560..52a7614 100644 Binary files a/philo_two/obj/ft_itoa.o and b/philo_two/obj/ft_itoa.o differ diff --git a/philo_two/obj/ft_strjoin.o b/philo_two/obj/ft_strjoin.o index 66270ab..385693a 100644 Binary files a/philo_two/obj/ft_strjoin.o and b/philo_two/obj/ft_strjoin.o differ diff --git a/philo_two/obj/logic.o b/philo_two/obj/logic.o index cb434b1..a748b09 100644 Binary files a/philo_two/obj/logic.o and b/philo_two/obj/logic.o differ diff --git a/philo_two/obj/main.o b/philo_two/obj/main.o index dfc0ba2..fe3a29a 100644 Binary files a/philo_two/obj/main.o and b/philo_two/obj/main.o differ diff --git a/philo_two/obj/messages.o b/philo_two/obj/messages.o index 4ead5b4..5e6dc90 100644 Binary files a/philo_two/obj/messages.o and b/philo_two/obj/messages.o differ diff --git a/philo_two/obj/observer.o b/philo_two/obj/observer.o new file mode 100644 index 0000000..ad9a04c Binary files /dev/null and b/philo_two/obj/observer.o differ diff --git a/philo_two/obj/old_utilc.o b/philo_two/obj/old_utilc.o index dc3a617..3cdb288 100644 Binary files a/philo_two/obj/old_utilc.o and b/philo_two/obj/old_utilc.o differ diff --git a/philo_two/obj/parser.o b/philo_two/obj/parser.o index cff51fe..9de8933 100644 Binary files a/philo_two/obj/parser.o and b/philo_two/obj/parser.o differ diff --git a/philo_two/obj/prepare_simulation.o b/philo_two/obj/prepare_simulation.o index 260d1bc..0c515c5 100644 Binary files a/philo_two/obj/prepare_simulation.o and b/philo_two/obj/prepare_simulation.o differ diff --git a/philo_two/obj/time.o b/philo_two/obj/time.o index 294aaf7..264c425 100644 Binary files a/philo_two/obj/time.o and b/philo_two/obj/time.o differ diff --git a/philo_two/obj/utilc.o b/philo_two/obj/utilc.o index a841bae..677a3e1 100644 Binary files a/philo_two/obj/utilc.o and b/philo_two/obj/utilc.o differ diff --git a/philo_two/obj/utilc2.o b/philo_two/obj/utilc2.o new file mode 100644 index 0000000..d0dc65c Binary files /dev/null and b/philo_two/obj/utilc2.o differ diff --git a/philo_two/philo_two b/philo_two/philo_two index a96f507..dca2f56 100755 Binary files a/philo_two/philo_two and b/philo_two/philo_two differ diff --git a/philo_two/srcs/ft_exit.c b/philo_two/srcs/ft_exit.c new file mode 100644 index 0000000..c911cd4 --- /dev/null +++ b/philo_two/srcs/ft_exit.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_exit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:16:23 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:23:12 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/philo_header.h" + +int ft_exit(t_all *all, int ret) +{ + int i; + + i = 0; + while (i < all->nbr_phils) + { + sem_close(all->data_philo->philors[i].eat_sem); + sem_close(&all->data_philo->sems[i]); + i++; + } + free(all->data_philo->philors); + free(all->data_philo); + free(all); + return (ret); +} diff --git a/philo_two/srcs/ft_itoa.c b/philo_two/srcs/ft_itoa.c index d2161e4..7d6c096 100644 --- a/philo_two/srcs/ft_itoa.c +++ b/philo_two/srcs/ft_itoa.c @@ -1,6 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_itoa.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:37 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:12:38 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" -static int nbleng(unsigned int n) +static int nbleng(unsigned int n) { unsigned int i; @@ -13,18 +25,31 @@ static int nbleng(unsigned int n) return (i + 1); } -char *ft_itoa(int n) +int ft_itoa_tern(int n) +{ + if (n < 0) + return (n * -1); + return (n); +} + +int ft_itoa_tern2(int n) +{ + if (n < 0) + return (1); + return (0); +} + +char *ft_itoa(int n) { char *dst; unsigned int leng; unsigned int nbr; unsigned int i; - nbr = (n < 0 ? -n : n); + nbr = ft_itoa_tern(n); leng = nbleng(nbr); i = 0; - if (!(dst = (char *)malloc(sizeof(char) * leng + 1 + (n < 0 ? 1 : 0)))) - return (NULL); + dst = (char *)malloc(sizeof(char) * leng + 1 + ft_itoa_tern2(n)); if (n < 0) { dst[i] = '-'; diff --git a/philo_two/srcs/ft_strjoin.c b/philo_two/srcs/ft_strjoin.c index b1208f0..ee0aed5 100644 --- a/philo_two/srcs/ft_strjoin.c +++ b/philo_two/srcs/ft_strjoin.c @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:40 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:12:41 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" char *ft_strjoin(char const *s1, char const *s2) @@ -8,14 +20,14 @@ char *ft_strjoin(char const *s1, char const *s2) if (s1 && s2) { - len1 = ft_strlen((char*)s1); - len2 = ft_strlen((char*)s2); + len1 = ft_strlen((char *)s1); + len2 = ft_strlen((char *)s2); new = malloc(sizeof(char *) * len1 + len2 + 1); if (new) { ft_strlcpy(new, s1, len1 + 1); ft_strlcat(new, s2, len1 + len2 + 1); - return (void *)(new); + return ((void *)(new)); } } return (0); diff --git a/philo_two/srcs/logic.c b/philo_two/srcs/logic.c index d3a1634..ab461ce 100644 --- a/philo_two/srcs/logic.c +++ b/philo_two/srcs/logic.c @@ -1,94 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* logic.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:43 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:12:44 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" -void *run_trhead(t_philo *philo) +void *run_trhead(t_philo *philo) { - while(philo->all_struct->smert != 42) + while (philo->all_struct->smert != 42) { if (philo->all_struct->opt) { - if (philo->count_eat == philo->all_struct->number_of_times_each_philosopher_must_eat) + if (philo->count_eat == philo->all_struct->etarate_meal) philo->all_struct->smert = 42; } cycle(philo); } - return(NULL); + return (NULL); } void take_forks(t_philo *philo) { - t_all *all; + t_all *all; + all = philo->all_struct; sem_wait(all->data_philo->sems); messages(philo->all_struct, philo, "has taken a fork"); sem_wait(all->data_philo->sems); messages(philo->all_struct, philo, "has taken a fork"); } + void eating(t_philo *philo) { - t_all *all; + t_all *all; + all = philo->all_struct; sem_wait(philo->eat_sem); messages(philo->all_struct, philo, "eating"); - philo->last_eat = ft_get_time() - philo->all_struct->start_time; + philo->last_eat = ft_get_time() - philo->all_struct->start_time; philo->count_eat++; ft_msleep(philo->all_struct->time_to_eat); sem_post(all->data_philo->sems); sem_post(all->data_philo->sems); sem_post(philo->eat_sem); } + void sleeping(t_philo *philo) { - t_all *all; + t_all *all; + all = philo->all_struct; messages(philo->all_struct, philo, "sleeping"); ft_msleep(philo->all_struct->time_to_sleep); } -void cycle(t_philo *philo) +void cycle(t_philo *philo) { messages(philo->all_struct, philo, "thinking"); take_forks(philo); eating(philo); sleeping(philo); } - -int run_observer(t_all *all) -{ - int i; - i = 0; - time_t time_eat; - while(1) - { - i = 0; - - while(i < all->number_of_philosophers) - { - - if (all->smert != 42) - { - time_eat = (ft_get_time() - all->start_time) - all->data_philo->philors[i].last_eat; - if (time_eat > all->time_to_die) - { - printf("%ld %d died\n", ft_get_time() - all->start_time, i + 1); - all->smert = 42; - return(2); - } - } - else - return(2); - i++; - } - ft_msleep(1); - } - return (0); -} - -int runner(t_all *all) -{ - prepare_resources(all); - all->start_time = ft_get_time(); - run_all_phils(all); - if (!run_observer(all)) - return(0); - return(1); -} diff --git a/philo_two/srcs/main.c b/philo_two/srcs/main.c index 01b6bd3..419334a 100644 --- a/philo_two/srcs/main.c +++ b/philo_two/srcs/main.c @@ -1,12 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:46 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:12:46 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" -int main(int argc, char **argv) +int main(int argc, char **argv) { if (parse_and_check_values(argv, argc) == 2) - return(0); + return (0); else { return (1); } - return(0); + return (0); } diff --git a/philo_two/srcs/messages.c b/philo_two/srcs/messages.c index 68e3136..4d9baf8 100644 --- a/philo_two/srcs/messages.c +++ b/philo_two/srcs/messages.c @@ -1,8 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* messages.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:48 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:12:49 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" void messages(t_all *all, t_philo *philo, char *str) { - time_t timestemp; + time_t timestemp; timestemp = ft_get_time() - all->start_time; if (philo->all_struct->smert != 42) diff --git a/philo_two/srcs/observer.c b/philo_two/srcs/observer.c new file mode 100644 index 0000000..860310d --- /dev/null +++ b/philo_two/srcs/observer.c @@ -0,0 +1,58 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* observer.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:50 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:22:45 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/philo_header.h" + +int run_observer_return(t_all *all, int i) +{ + printf("%ld %d died\n", \ + ft_get_time() - all->start_time, i + 1); + all->smert = 42; + return (2); +} + +int run_observer(t_all *all) +{ + int i; + time_t time_eat; + + i = 0; + while (1) + { + i = 0; + while (i < all->nbr_phils) + { + if (all->smert != 42) + { + time_eat = (ft_get_time() - \ + all->start_time) - all->data_philo->philors[i].last_eat; + if (time_eat > all->time_to_die) + return (run_observer_return(all, i)); + } + else + return (ft_exit(all, 2)); + i++; + } + ft_msleep(1); + } + return (0); +} + +int runner(t_all *all) +{ + prepare_resources(all); + all->start_time = ft_get_time(); + run_all_phils(all); + if (!run_observer(all)) + return (0); + return (1); +} diff --git a/philo_two/srcs/old_utilc.c b/philo_two/srcs/old_utilc.c index 3d505cb..7eee3d0 100644 --- a/philo_two/srcs/old_utilc.c +++ b/philo_two/srcs/old_utilc.c @@ -1,6 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* old_utilc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:53 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:12:54 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" -int check_f(char ch) +int check_f(char ch) { if (ch == '\t' || ch == '\n' || ch == ' ' || \ ch == '\v' || ch == '\f' || ch == '\r') @@ -9,7 +21,7 @@ int check_f(char ch) return (0); } -int ft_atoi(const char *str) +int ft_atoi(const char *str) { int i; unsigned long int result; diff --git a/philo_two/srcs/parser.c b/philo_two/srcs/parser.c index 55f6723..3369c66 100644 --- a/philo_two/srcs/parser.c +++ b/philo_two/srcs/parser.c @@ -1,68 +1,85 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parser.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:56 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:12:56 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" -int check_param(t_all *all, int optional) +int check_param(t_all *all, int optional) { if (optional) { - if (all->number_of_philosophers <= 0) - return(1); + if (all->nbr_phils <= 0) + return (1); if (all->time_to_die <= 0) - return(1); + return (1); if (all->time_to_eat <= 0) - return(1); + return (1); if (all->time_to_sleep <= 0) - return(1); - if (all->number_of_times_each_philosopher_must_eat <= 0) - return(1); + return (1); + if (all->etarate_meal <= 0) + return (1); } else { - if (all->number_of_philosophers <= 0) - return(1); + if (all->nbr_phils <= 0) + return (1); if (all->time_to_die <= 0) - return(1); + return (1); if (all->time_to_eat <= 0) - return(1); + return (1); if (all->time_to_sleep <= 0) - return(1); + return (1); } return (0); } -int parse_param(t_all *all, int optional, char **argv) +int parse_param(t_all *all, int optional, char **argv) { all->smert = 0; if (optional) { - all->number_of_philosophers = ft_atoi(argv[1]); + all->nbr_phils = ft_atoi(argv[1]); all->time_to_die = ft_atoi(argv[2]); all->time_to_eat = ft_atoi(argv[3]); all->time_to_sleep = ft_atoi(argv[4]); - all->number_of_times_each_philosopher_must_eat = ft_atoi(argv[5]); + all->etarate_meal = ft_atoi(argv[5]); all->opt = 1; return (check_param(all, 1)); } else { - all->number_of_philosophers = ft_atoi(argv[1]); + all->nbr_phils = ft_atoi(argv[1]); all->time_to_die = ft_atoi(argv[2]); all->time_to_eat = ft_atoi(argv[3]); all->time_to_sleep = ft_atoi(argv[4]); - all->number_of_times_each_philosopher_must_eat = 0; + all->etarate_meal = 0; all->opt = 0; return (check_param(all, 0)); } } -int parse_and_check_values(char **argv, int quantity) +static void parse_and_check_part2(int quantity, int *bool) +{ + if (quantity == 5) + *bool = 0; + if (quantity == 6) + *bool = 1; +} + +int parse_and_check_values(char **argv, int quantity) { t_all *all; int bool; - if (quantity == 5) - bool = 0; - if (quantity == 6) - bool = 1; + parse_and_check_part2(quantity, &bool); all = structalloc_and_bzero(); if (quantity == 5 || quantity == 6) { @@ -70,7 +87,7 @@ int parse_and_check_values(char **argv, int quantity) { if (runner(all) == 2) return (2); - return(1); + return (1); } else { @@ -82,6 +99,6 @@ int parse_and_check_values(char **argv, int quantity) { printf("error please use argument 5 (optional) or 4 (standart)\n"); free(all); - return(0); + return (0); } } diff --git a/philo_two/srcs/prepare_simulation.c b/philo_two/srcs/prepare_simulation.c index bc59d2b..87a4dff 100644 --- a/philo_two/srcs/prepare_simulation.c +++ b/philo_two/srcs/prepare_simulation.c @@ -1,11 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* prepare_simulation.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:12:58 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:12:59 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" -int check_all_run(t_all *all) +int check_all_run(t_all *all) { - int i; + int i; i = 0; - while (i < all->number_of_philosophers) + while (i < all->nbr_phils) { if (all->data_philo->philors[i].worked) { @@ -17,10 +29,10 @@ int check_all_run(t_all *all) void run_simulation(t_all *all) { - int i; + int i; i = 0; - while (i < all->number_of_philosophers) + while (i < all->nbr_phils) { if (!all->data_philo->philors[i].can_run_simulation) { @@ -35,7 +47,7 @@ void get_data_f_philo(t_all *all) int i; i = 0; - while (i < all->number_of_philosophers) + while (i < all->nbr_phils) { all->data_philo->philors[i].died = 0; all->data_philo->philors[i].nbr_philo = i; @@ -44,20 +56,21 @@ void get_data_f_philo(t_all *all) all->data_philo->philors[i].all_struct = all; all->data_philo->philors[i].is_eat = 0; all->data_philo->philors[i].name = sem_set_name("philo", i); - all->data_philo->philors[i].eat_sem = reopen_sem(all->data_philo->philors[i].name, 1); + all->data_philo->philors[i].eat_sem = \ + reopen_sem(all->data_philo->philors[i].name, 1); i++; } } -int prepare_resources(t_all *all) +int prepare_resources(t_all *all) { - int i; + int i; i = 0; all->data_philo = ft_calloc(sizeof(t_philo_data), 1); - all->data_philo->sems = reopen_sem(_SEM_NAME_FORKS, all->number_of_philosophers); + all->data_philo->sems = reopen_sem(_SEM_NAME_FORKS, all->nbr_phils); all->write = reopen_sem(_SEM_WRITE_LOCK, 1); - all->data_philo->philors = (t_philo *)ft_calloc(all->number_of_philosophers \ + all->data_philo->philors = (t_philo *)ft_calloc(all->nbr_phils \ + 1, sizeof(t_philo)); get_data_f_philo(all); return (0); @@ -69,11 +82,11 @@ void run_all_phils(t_all *all) int i; i = 0; - while (i < all->number_of_philosophers) + while (i < all->nbr_phils) { - philo = (void*)(&all->data_philo->philors[i]); + philo = (void *)(&all->data_philo->philors[i]); if (pthread_create(&all->data_philo->philors[i].thread, NULL, \ - (void*)run_trhead, philo) == -1) + (void *)run_trhead, philo) == -1) printf("I can't create a thread t%d\n", i); else pthread_detach(all->data_philo->philors[i].thread); diff --git a/philo_two/srcs/time.c b/philo_two/srcs/time.c index 1b74927..1c9d56e 100644 --- a/philo_two/srcs/time.c +++ b/philo_two/srcs/time.c @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* time.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:13:01 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:13:01 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" time_t ft_get_time(void) diff --git a/philo_two/srcs/utilc.c b/philo_two/srcs/utilc.c index a61df6c..d7a4202 100644 --- a/philo_two/srcs/utilc.c +++ b/philo_two/srcs/utilc.c @@ -1,15 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utilc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 12:13:03 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:13:04 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../includes/philo_header.h" t_all *structalloc_and_bzero(void) { - t_all *all; + t_all *all; all = ft_calloc(sizeof(t_all), 1); - all->number_of_philosophers = -1; + all->nbr_phils = -1; all->time_to_die = -1; all->time_to_eat = -1; all->time_to_sleep = -1; - all->number_of_times_each_philosopher_must_eat = -1; + all->etarate_meal = -1; return (all); } @@ -64,10 +76,9 @@ size_t ft_strlcat(char *dst, const char *src, size_t size) return (len); } - int ft_strlen(char *str) { - int i; + int i; i = 0; while (str[i]) @@ -85,9 +96,3 @@ char *sem_set_name(char *str, int i) free(temp_nbr); return (returnstr); } - -sem_t *reopen_sem(const char *name, int value) -{ - sem_unlink(name); - return (sem_open(name, O_RDWR | O_CREAT, S_IRWXU, value)); -} diff --git a/philo_two/srcs/utilc2.c b/philo_two/srcs/utilc2.c new file mode 100644 index 0000000..30c6870 --- /dev/null +++ b/philo_two/srcs/utilc2.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utilc2.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mdenys +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/19 17:34:52 by mdenys #+# #+# */ +/* Updated: 2021/05/20 12:13:07 by mdenys ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/philo_header.h" + +sem_t *reopen_sem(const char *name, int value) +{ + sem_unlink(name); + return (sem_open(name, O_RDWR | O_CREAT, S_IRWXU, value)); +}