fit musl lib for arm boards.

This commit is contained in:
TXuian
2022-07-26 01:08:20 -07:00
parent e1999f5af9
commit 214cf55603
577 changed files with 42233 additions and 111 deletions

View File

@@ -22,6 +22,7 @@
#define TRANSFORM_H
#include <pthread.h>
#include <signal.h>
#include <semaphore.h>
#include <stddef.h>
#include <stdint.h>

View File

@@ -29,9 +29,8 @@ extern "C" {
#include <time.h>
#include <sys/time.h>
#if defined(ARCH_ARM)
#if defined(ARCH_ARM) && !defined(LIB_MUSLLIB)
#include "pthread arm.h"
#endif
// enum {
// PTHREAD_BARRIER_SERIAL_THREAD,
@@ -94,7 +93,7 @@ int pthread_setname_np(pthread_t thread, const char *name);
int pthread_timedjoin_np(pthread_t thread, void **retval, const struct timespec *abstime);
/* function in pthread_mutex.c */
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
int pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutexattr_t* attr);
int pthread_mutex_destroy(pthread_mutex_t *mutex);
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
@@ -105,7 +104,8 @@ int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);
int pthread_mutexattr_gettype(const pthread_mutexattr_t *attr, int *type);
int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type);
int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr, int pshared);
int pthread_mutexattr_getpshared(pthread_mutexattr_t *attr, int *pshared);
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *attr, int *pshared);
#endif
#ifdef __cplusplus
}

View File

@@ -49,8 +49,8 @@ int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
return -1 ;
ret = UserTaskStartup(pid);
*thread = pid;
*thread = (pthread_t)pid;
return ret;
}
@@ -63,7 +63,7 @@ void pthread_exit(void *value_ptr){
pthread_t pthread_self(void){
pthread_t pthread ;
pthread = UserGetTaskID();
pthread = (pthread_t)UserGetTaskID();
return pthread;
}
@@ -112,7 +112,7 @@ int pthread_join(pthread_t thread, void **retval)
int pthread_kill(pthread_t thread, int sig)
{
/* This api should not be used, and will not be supported */
UserTaskDelete(thread);
UserTaskDelete((int32_t)thread);
return -1;
}

View File

@@ -21,7 +21,117 @@
#include <time.h>
#include "include/pthread.h"
#include <pthread.h>
#include <string.h>
#if defined(ARCH_ARM) && defined(LIB_MUSLLIB)
int pthread_mutex_init(pthread_mutex_t* p_mutex, const pthread_mutexattr_t* attr)
{
pthread_mutexattr_t mutexAttr;
uint32_t mutex_handle;
// check p_mutex
if (p_mutex == NULL) {
return EINVAL;
}
// set attr
if (attr == NULL) {
pthread_mutexattr_init(&mutexAttr);
}
else {
mutexAttr = *attr;
}
// create mutex
mutex_handle = UserMutexCreate();
if (mutex_handle < 0) {
return mutex_handle;
}
p_mutex->stAttr = mutexAttr;
p_mutex->magic = _MUX_MAGIC;
p_mutex->handle = mutex_handle;
return 0;
}
int pthread_mutex_destroy(pthread_mutex_t *p_mutex)
{
if ((p_mutex == NULL) || (p_mutex->magic != _MUX_MAGIC)) {
return EINVAL;
}
UserMutexDelete(p_mutex->handle);
p_mutex->handle = _MUX_INVALID_HANDLE;
p_mutex->magic = 0;
return 0;
}
int pthread_mutex_lock(pthread_mutex_t *p_mutex)
{
if ((p_mutex == NULL) || (p_mutex->magic != _MUX_MAGIC) ||
(p_mutex->handle == _MUX_INVALID_HANDLE)) {
return EINVAL;
}
return UserMutexObtain(p_mutex->handle, WAITING_FOREVER);
}
int pthread_mutex_unlock(pthread_mutex_t *p_mutex)
{
if ((p_mutex == NULL) || (p_mutex->magic != _MUX_MAGIC) ||
(p_mutex->handle == _MUX_INVALID_HANDLE)) {
return EINVAL;
}
return UserMutexAbandon(p_mutex->handle);
}
int pthread_mutex_trylock(pthread_mutex_t *p_mutex)
{
if ((p_mutex == NULL) || (p_mutex->magic != _MUX_MAGIC) ||
(p_mutex->handle == _MUX_INVALID_HANDLE)) {
return EINVAL;
}
return UserMutexObtain(p_mutex->handle , 0);
}
int pthread_mutexattr_init(pthread_mutexattr_t *attr)
{
if (attr == NULL) {
return EINVAL;
}
attr->type = PTHREAD_MUTEX_DEFAULT;
return 0;
}
int pthread_mutexattr_destroy(pthread_mutexattr_t *attr)
{
if (attr == NULL) {
return EINVAL;
}
memset(attr, 0, sizeof(pthread_mutexattr_t));
return 0;
}
int pthread_mutexattr_gettype(const pthread_mutexattr_t *attr, int *type)
{
if (attr == NULL) {
return EINVAL;
}
*type = attr->type;
return 0;
}
int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type)
{
if (attr == NULL) {
return EINVAL;
}
attr->type = type;
return 0;
}
#else
int pthread_mutex_init(pthread_mutex_t *p_mutex, const pthread_mutexattr_t *attr)
{
*p_mutex = UserMutexCreate();
@@ -82,9 +192,11 @@ int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type)
return 0;
}
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict attr, int *restrict protocol)
{
#endif
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t* restrict attr, int* restrict protocol)
{
return 0;
}
@@ -118,7 +230,7 @@ int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr, int pshared)
return 0;
}
int pthread_mutexattr_getpshared(pthread_mutexattr_t *attr, int *pshared)
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *attr, int *pshared)
{
return 0;
}