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