Path: blob/master/philo_bonus/philosophers_bonus.h
882 views
/* ************************************************************************** */1/* */2/* ::: :::::::: */3/* philosophers_bonus.h :+: :+: :+: */4/* +:+ +:+ +:+ */5/* By: yabtaour <[email protected]> +#+ +:+ +#+ */6/* +#+#+#+#+#+ +#+ */7/* Created: 2022/05/23 00:08:58 by yabtaour #+# #+# */8/* Updated: 2022/05/23 00:47:20 by yabtaour ### ########.fr */9/* */10/* ************************************************************************** */11#ifndef PHILOSOPHERS_BONUS_H12# define PHILOSOPHERS_BONUS_H1314# include <stdio.h>15# include <unistd.h>16# include <stdlib.h>17# include <semaphore.h>18# include <pthread.h>19# include <string.h>20# include <signal.h>21# include <sys/time.h>2223typedef struct s_philo{24int philo_id;25int eat;26int is_dead;27long long last_meal;28pthread_t *thread_id;29struct s_data *data;30} t_philo;3132typedef struct s_data{33int argc;34char **argv;35int philos_num;36int time_to_die;37int time_to_eat;38int time_to_sleep;39int must_eat;40int is_dead;41int all_ate;42long long birth;43char *args;44char **arguments;45int total;46int *pid;47t_philo *philosopher;48sem_t *fork;49sem_t *eat;50sem_t *output;51} t_data;5253int ft_parsing(t_data *data);54int ft_initialize_data(t_data *data);55void free_split(char **arguments);56int ft_d(int c);57char **ft_split(char *s, char c);58char *ft_join_args(char *argv[], int argc);59int ft_atoi(const char *str);60void *ft_calloc(int count, int size);61char *ft_substr(char *s, int start, size_t len);62int ft_strlen(char *str);63int ft_start_semaphores(t_data *data);64int ft_start(t_data *data);65void ft_sleep(long long time, t_data *data);66long long ft_timestamp(void);67void ft_output(t_data *data, int philo_id, char *str);68void *ft_start_philosophers(t_data *data, int i);69void *ft_check_dead(t_philo *philo);70void ft_destroy_sem(t_data *data);71void ft_kill(t_data *data);72void ft_end(t_data *data);7374#endif757677