diff options
Diffstat (limited to 'philo/src')
| -rw-r--r-- | philo/src/init.c | 71 | ||||
| -rw-r--r-- | philo/src/main.c | 57 |
2 files changed, 72 insertions, 56 deletions
diff --git a/philo/src/init.c b/philo/src/init.c new file mode 100644 index 0000000..6f91f7e --- /dev/null +++ b/philo/src/init.c @@ -0,0 +1,71 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* init.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/01/28 13:12:57 by dkaiser #+# #+# */ +/* Updated: 2025/01/28 13:15:30 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "philo.h" + +static void init_philo(t_philo *philo, t_phdata *data, int id); +static int init_philos(t_philo **philos, t_phdata *data); + +int init(t_philo **philos, t_phdata *data) +{ + int result; + + *philos = (t_philo *)malloc(sizeof(t_philo) * data->nbr_of_philos); + if (*philos == NULL) + return (ft_err(ERR_MALLOC)); + data->forks = (t_fork *)malloc(sizeof(t_fork) * data->nbr_of_philos); + if (data->forks == NULL) + { + free(*philos); + return (ft_err(ERR_MALLOC)); + } + result = pthread_mutex_init(&(data->pme_mutex), NULL); + if (result != 0) + { + free(*philos); + free(data->forks); + return (result); + } + result = init_philos(philos, data); + return (result); +} + +static int init_philos(t_philo **philos, t_phdata *data) +{ + int i; + int result; + + i = 0; + while (i < data->nbr_of_philos) + { + init_philo(&(*philos)[i], data, i + 1); + data->forks[i].owner = 0; + result = pthread_mutex_init(&(data->forks[i].mutex), NULL); + if (result != 0) + { + free(*philos); + free(data->forks); + return (result); + } + i++; + } + return (EXIT_SUCCESS); +} + +static void init_philo(t_philo *philo, t_phdata *data, int id) +{ + philo->id = id; + philo->is_alive = 1; + philo->times_must_eat = data->times_must_eat; + philo->data = data; + philo->last_time_eaten = ft_cur_time_in_ms(); +} diff --git a/philo/src/main.c b/philo/src/main.c index a43fe8d..ae0e54b 100644 --- a/philo/src/main.c +++ b/philo/src/main.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/14 17:13:30 by dkaiser #+# #+# */ -/* Updated: 2025/01/27 12:07:13 by dkaiser ### ########.fr */ +/* Updated: 2025/01/28 13:20:47 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,61 +38,6 @@ int load_data(t_phdata *data, int argc, char *argv[]) return (EXIT_SUCCESS); } -void init_philo(t_philo *philo, t_phdata *data, int id) -{ - philo->id = id; - philo->is_alive = 1; - philo->times_must_eat = data->times_must_eat; - philo->data = data; - philo->last_time_eaten = ft_cur_time_in_ms(); -} - -int init_philos(t_philo **philos, t_phdata *data) -{ - int i; - int result; - - i = 0; - while (i < data->nbr_of_philos) - { - init_philo(&(*philos)[i], data, i + 1); - data->forks[i].owner = 0; - result = pthread_mutex_init(&(data->forks[i].mutex), NULL); - if (result != 0) - { - free(*philos); - free(data->forks); - return (result); - } - i++; - } - return (EXIT_SUCCESS); -} - -int init(t_philo **philos, t_phdata *data) -{ - int result; - - *philos = (t_philo *)malloc(sizeof(t_philo) * data->nbr_of_philos); - if (*philos == NULL) - return (ft_err(ERR_MALLOC)); - data->forks = (t_fork *)malloc(sizeof(t_fork) * data->nbr_of_philos); - if (data->forks == NULL) - { - free(*philos); - return (ft_err(ERR_MALLOC)); - } - result = pthread_mutex_init(&(data->pme_mutex), NULL); - if (result != 0) - { - free(*philos); - free(data->forks); - return (result); - } - result = init_philos(philos, data); - return (result); -} - int main(int argc, char *argv[]) { t_phdata data; |
