From ae1d0824445752217f40a9db3e709e154c791824 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Wed, 29 Apr 2020 19:43:32 +0200 Subject: [PATCH] Setting a sleep in mthread_main, because autherwise mthread is a glutton (one cpu at 100%) --- inc/mthread/mthread.h | 2 +- src/main/lktadm.c | 2 +- src/mthread/mthread.c | 22 +++++++++++++--------- src/mthread/mthread_mutex.c | 1 - src/thread.c | 2 +- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/inc/mthread/mthread.h b/inc/mthread/mthread.h index a370405b..c708a441 100644 --- a/inc/mthread/mthread.h +++ b/inc/mthread/mthread.h @@ -105,5 +105,5 @@ void mthread_yield(); /* Initialize mthread. */ -void mthread_init(); +void mthread_init(void); void *mthread_main(void *arg); diff --git a/src/main/lktadm.c b/src/main/lktadm.c index 38d97555..5676ad2e 100644 --- a/src/main/lktadm.c +++ b/src/main/lktadm.c @@ -178,7 +178,7 @@ init_file_prompt__(struct lkt_cmd_args *args) kara_metadata_write(&data, args->argv[i], mkvpropedit); LOG_INFO("You may name this kara with the following name: '%s - %s%d - %s'", - data.source_name, data.song_type, data.song_number, data.song_name); + data.source_name, data.song_type, data.song_number, data.song_name); } exit(EXIT_SUCCESS); } diff --git a/src/mthread/mthread.c b/src/mthread/mthread.c index 07d6918f..4944174f 100644 --- a/src/mthread/mthread.c +++ b/src/mthread/mthread.c @@ -1,6 +1,9 @@ +#define _POSIX_C_SOURCE 200809L + #include <mthread/mthread_internal.h> #include <sched.h> #include <string.h> +#include <unistd.h> #define MTHREAD_LWP 1 @@ -127,8 +130,6 @@ mthread_mctx_swap(struct mthread_s *cur_mctx, struct mthread_s *new_mctx) void __mthread_yield(mthread_virtual_processor_t *vp) { - sched_yield(); - struct mthread_s *current = (struct mthread_s *)vp->current; struct mthread_s *next = mthread_remove_first(&(vp->ready_list)); @@ -217,8 +218,11 @@ mthread_main(void *arg) { (void)arg; mthread_virtual_processor_t *vp = mthread_get_vp(); - while (1) + while (1) { + sched_yield(); + sleep(1); __mthread_yield(vp); + } return NULL; } @@ -265,18 +269,18 @@ mthread_start_thread(void *arg) /* Function for handling threads. */ static inline void -__mthread_lib_init() +__mthread_lib_init(long i) { - mthread_init_lib(0); + mthread_init_lib(i); virtual_processors[0].state = 1; - LOG_INFO_SCT("MThread", "%s", "library started"); + LOG_INFO_SCT("THREAD", "%s", "library started"); } void -mthread_init() +mthread_init(void) { if (is_mthread_init == 0) { - __mthread_lib_init(); + __mthread_lib_init(0); is_mthread_init = 1; } } @@ -289,7 +293,7 @@ mthread_create(mthread_t *__threadp, const mthread_attr_t *__attr, void *(*__start_routine) (void *), void *__arg) { if (is_mthread_init == 0) { - __mthread_lib_init(); + __mthread_lib_init(0); is_mthread_init = 1; } diff --git a/src/mthread/mthread_mutex.c b/src/mthread/mthread_mutex.c index 85fbc6ad..b82ec5f1 100644 --- a/src/mthread/mthread_mutex.c +++ b/src/mthread/mthread_mutex.c @@ -9,7 +9,6 @@ int mthread_mutex_init(mthread_mutex_t *__mutex, const mthread_mutexattr_t *__mutex_attr) { - mthread_init(); (void) __mutex_attr; __mutex->list = safe_malloc(sizeof(mthread_list_t)); diff --git a/src/thread.c b/src/thread.c index daa77b88..4969c933 100644 --- a/src/thread.c +++ b/src/thread.c @@ -52,7 +52,7 @@ lkt_th_new(struct poller_thread *th, unsigned int init_sizes, __args->arg = args; __args->arg->self = th; - if(!pthread_create(&(th->th), NULL, __start, __args)) { + if (!pthread_create(&(th->th), NULL, __start, __args)) { LOG_INFO_SCT("THREAD", "%s", "Create a new poller thread"); return 0; } -- GitLab