Loading...
/* phil_task.c - dining philosophers */ /* * Copyright (c) 2011-2016 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 */ #include <zephyr.h> #include "phil.h" #define STSIZE 1024 extern void phil_entry(void); extern void object_monitor(void); char __stack phil_stack[N_PHILOSOPHERS][STSIZE]; char __stack mon_stack[STSIZE]; struct k_sem forks[N_PHILOSOPHERS]; /** * * @brief Nanokernel entry point * */ int main(void) { int i; for (i = 0; i < N_PHILOSOPHERS; i++) { k_sem_init(&forks[i], 0, 1); k_sem_give(&forks[i]); } /* create philosopher threads */ for (i = 0; i < N_PHILOSOPHERS; i++) { k_thread_spawn(&phil_stack[i][0], STSIZE, (k_thread_entry_t)phil_entry, NULL, NULL, NULL, K_PRIO_COOP(6), 0, K_NO_WAIT); } /* create object counter monitor thread */ k_thread_spawn(mon_stack, STSIZE, (k_thread_entry_t)object_monitor, NULL, NULL, NULL, K_PRIO_COOP(7), 0, K_NO_WAIT); return 0; } |