thread naming correction + change embedded.h logic

This commit is contained in:
philippe44
2019-07-01 13:05:32 -07:00
parent 83f9f3320e
commit 81452733fc
6 changed files with 31 additions and 29 deletions

View File

@@ -206,11 +206,8 @@ void decode_init(log_level level, const char *include_codecs, const char *exclud
#ifdef PTHREAD_STACK_MIN
pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN + DECODE_THREAD_STACK_SIZE);
#endif
pthread_create(&thread, &attr, decode_thread, NULL);
pthread_create_name(&thread, &attr, decode_thread, NULL, "decode");
pthread_attr_destroy(&attr);
#if HAS_PTHREAD_SETNAME_NP
pthread_setname_np(thread, "decode");
#endif
#endif
#if WIN
thread = CreateThread(NULL, DECODE_THREAD_STACK_SIZE, (LPTHREAD_START_ROUTINE)&decode_thread, NULL, 0, NULL);

View File

@@ -19,6 +19,7 @@
*
*/
#include "squeezelite.h"
#include "pthread.h"
#include "esp_pthread.h"
#include "esp_system.h"
@@ -34,11 +35,11 @@ void *audio_calloc(size_t nmemb, size_t size) {
return calloc(nmemb, size);
}
int pthread_setname_np(pthread_t thread, const char *name) {
int pthread_create_name(pthread_t *thread, _CONST pthread_attr_t *attr,
void *(*start_routine)( void * ), void *arg, char *name) {
esp_pthread_cfg_t cfg = esp_pthread_get_default_config();
cfg.thread_name= name;
cfg.thread_name = name;
cfg.inherit_cfg = true;
return esp_pthread_set_cfg(&cfg);
esp_pthread_set_cfg(&cfg);
return pthread_create(thread, attr, start_routine, arg);
}

View File

@@ -3,9 +3,16 @@
#include <inttypes.h>
#define HAS_MUTEX_CREATE_P 0
#define HAS_PTHREAD_SETNAME_NP 1
/* must provide
- mutex_create_p
- pthread_create_name
- stack size
- s16_t, s32_t, s64_t and u64_t
can overload
- exit
recommended to add platform specific include(s) here
*/
#ifndef PTHREAD_STACK_MIN
#define PTHREAD_STACK_MIN 256
#endif
@@ -23,6 +30,9 @@ typedef unsigned long long u64_t;
// all exit() calls are made from main thread (or a function called in main thread)
#define exit(code) { int ret = code; pthread_exit(&ret); }
int pthread_setname_np(pthread_t thread, const char *name);
#define mutex_create_p(m) mutex_create(m)
int pthread_create_name(pthread_t *thread, _CONST pthread_attr_t *attr,
void *(*start_routine)( void * ), void *arg, char *name);
#endif // EMBEDDED_H

View File

@@ -149,17 +149,11 @@ void output_init_i2s(log_level level, char *device, unsigned output_buf_size, ch
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN + OUTPUT_THREAD_STACK_SIZE);
pthread_create(&thread, &attr, output_thread_i2s, NULL);
pthread_create_name(&thread, &attr, output_thread_i2s, NULL, "output_i2s");
pthread_attr_destroy(&attr);
#if HAS_PTHREAD_SETNAME_NP
pthread_setname_np(thread, "output_i2s");
#endif
// leave stack size to default
pthread_create(&stats_thread, NULL, output_thread_i2s_stats, NULL);
#if HAS_PTHREAD_SETNAME_NP
pthread_setname_np(stats_thread, "output_i2s_sts");
#endif
pthread_create_name(&stats_thread, NULL, output_thread_i2s_stats, NULL, "output_i2s_sts");
}
@@ -286,7 +280,9 @@ static void *output_thread_i2s() {
SET_MIN_MAX( TIME_MEASUREMENT_GET(timer_start),i2s_time);
frames = 0;
}
} else {
LOG_WARN("no frame returned %d", output.state);
}
}
return 0;

View File

@@ -315,15 +315,16 @@ typedef int64_t s64_t;
#define mutex_type pthread_mutex_t
#define mutex_create(m) pthread_mutex_init(&m, NULL)
#if HAS_MUTEX_CREATE_P
#if !EMBEDDED
#define mutex_create_p(m) pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); pthread_mutexattr_setprotocol(&attr, PTHREAD_PRIO_INHERIT); pthread_mutex_init(&m, &attr); pthread_mutexattr_destroy(&attr)
#else
#define mutex_create_p(m) mutex_create(m)
#endif
#define mutex_lock(m) pthread_mutex_lock(&m)
#define mutex_unlock(m) pthread_mutex_unlock(&m)
#define mutex_destroy(m) pthread_mutex_destroy(&m)
#define thread_type pthread_t
#if !EMBEDDED
#define pthread_create_name(t,a,f,p,n) pthread_create(t,a,f,p)
#endif
#endif
#if WIN

View File

@@ -412,11 +412,8 @@ void stream_init(log_level level, unsigned stream_buf_size) {
#ifdef PTHREAD_STACK_MIN
pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN + STREAM_THREAD_STACK_SIZE);
#endif
pthread_create(&thread, &attr, stream_thread, NULL);
pthread_create_name(&thread, &attr, stream_thread, NULL, "stream");
pthread_attr_destroy(&attr);
#if HAS_PTHREAD_SETNAME_NP
pthread_setname_np(thread, "stream");
#endif
#endif
#if WIN
thread = CreateThread(NULL, STREAM_THREAD_STACK_SIZE, (LPTHREAD_START_ROUTINE)&stream_thread, NULL, 0, NULL);