GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)

This commit is contained in:
lai
2026-09-06 03:52:57 +08:00
commit b1928b41c0
21813 changed files with 4413081 additions and 0 deletions
@@ -0,0 +1,159 @@
/*
* Copyright (c) XMEDIA. All rights reserved.
*/
#ifndef __XMEDIA_THREAD_H__
#define __XMEDIA_THREAD_H__
#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif /* __cplusplus */
#include <pthread.h>
#include <semaphore.h>
#include <bsp_defs.h>
#include <stdio.h>
typedef pthread_mutex_t XMEDIA_THREAD_MUTEX ;
typedef pthread_mutexattr_t XMEDIA_THREAD_MUTEXATTR;
typedef pthread_cond_t XMEDIA_THREAD_COND;
typedef pthread_condattr_t XMEDIA_THREAD_CONDATTR;
typedef struct XMEDIA_SYNC_STRU
{
#if defined(SYNC_USE_COND)
XMEDIA_THREAD_MUTEX _mutex;
XMEDIA_THREAD_COND _cond;
#else
sem_t _sem;
#endif
}XMEDIA_SYNC_T;
#define MAX_THREAD_NAME_LEN 16
typedef int XMEDIA_PRIORITY_T;
typedef char THREAD_NAME[MAX_THREAD_NAME_LEN];
typedef VOID* (*THREAD_RUN)(VOID* );
typedef struct XMEDIA_THREAD_STRU
{
THREAD_NAME szThreadName;
/**/
pthread_t threadid;
pid_t pid;
XMEDIA_PRIORITY_T priority;
THREAD_RUN pf_run;
BOOL bStart;
XMEDIA_THREAD_COND cond_start;
XMEDIA_THREAD_MUTEX mutex_cond_start;
VOID* args;
}XMEDIA_THREAD_T;
EXTERNFUNC XMEDIA_RET bsp_thread_init(XMEDIA_THREAD_T *pThread, const char* szName,
THREAD_RUN pf, INT32 priority, BOOL bStart);
VOID* bsp_thread_run_handle(VOID* arg);
EXTERNFUNC void bsp_delay(U32 ulUsDelay);
/*__wait is TRUE, not run when create , wait cond_start to run*/
EXTERNFUNC INT32 bsp_thread_create(XMEDIA_THREAD_T *pThread,const pthread_attr_t*__attr,
void*__arg);
EXTERNFUNC INT32 bsp_thread_join(XMEDIA_THREAD_T *pThread, void **thread_return);
EXTERNFUNC INT32 XMEDIA_THREAD_Start(XMEDIA_THREAD_T *pThread);
EXTERNFUNC INT32 bsp_thread_pause(XMEDIA_THREAD_T *pThread);
EXTERNFUNC INT32 bsp_thread_cancel(XMEDIA_THREAD_T *pThread);
EXTERNFUNC VOID bsp_thread_setid(XMEDIA_THREAD_T *pThread);
EXTERNFUNC VOID bsp_thread_setpriority(XMEDIA_THREAD_T *pThread, XMEDIA_PRIORITY_T prio);
/*** ------------------------------------ ***/
EXTERNFUNC INT32 bsp_thread_mutex_init(XMEDIA_THREAD_MUTEX* pMutex, XMEDIA_THREAD_MUTEXATTR* pMutexattr);
EXTERNFUNC INT32 bsp_thread_mutex_lock(XMEDIA_THREAD_MUTEX* pMutex);
EXTERNFUNC INT32 bsp_thread_mutex_trylock(XMEDIA_THREAD_MUTEX* pMutex);
EXTERNFUNC INT32 bsp_thread_mutex_unlock(XMEDIA_THREAD_MUTEX* pMutex);
EXTERNFUNC INT32 bsp_thread_mutex_destroy(XMEDIA_THREAD_MUTEX* pMutex);
/*** ------------------------------------ ***/
EXTERNFUNC INT32 bsp_thread_cond_init(XMEDIA_THREAD_COND* pCond, XMEDIA_THREAD_CONDATTR* pCondattr);
EXTERNFUNC INT32 bsp_thread_cond_signal(XMEDIA_THREAD_COND* pCond);
EXTERNFUNC INT32 bsp_thread_cond_broadcast(XMEDIA_THREAD_COND* pCond);
EXTERNFUNC INT32 bsp_thread_cond_wait(XMEDIA_THREAD_COND* pCond, XMEDIA_THREAD_MUTEX *pMutex, U32 msecs);
EXTERNFUNC INT32 bsp_thread_cond_destroy(XMEDIA_THREAD_COND* pCond);
#define DEFAULT_PRIORITY 0
#define THREAD_PRIORITY_AUDIO 0
#define THREAD_PRIORITY_AZ 10
#define THREAD_SLEEP(msec) usleep(msec * 1000)
/*#define THREAD_SLEEP(msec) */
/*** -------------------------------------***/
EXTERNFUNC XMEDIA_RET bsp_sync_create(IO XMEDIA_SYNC_T *pWait);
EXTERNFUNC XMEDIA_RET bsp_sync_wait(IO XMEDIA_SYNC_T *pWait, IN U32 msec);
EXTERNFUNC XMEDIA_RET bsp_sync_notify(IO XMEDIA_SYNC_T *pWait);
EXTERNFUNC XMEDIA_RET bsp_sync_destroy(IO XMEDIA_SYNC_T *pWait);
#if defined(DEBUG)
#define SYNC_WAIT(pSync, msec, pStr) \
if (pStr) \
WRITE_LOG_DEBUG(pStr); \
bsp_sync_wait(pSync, msec)
#define SYNC_NOTIFY(pSync, msec, pStr) \
if (pStr) \
WRITE_LOG_DEBUG(pStr); \
bsp_sync_notify(pSync)
#else
#define SYNC_WAIT(pSync, msec, pStr) \
bsp_sync_wait(pSync, msec)
#define SYNC_NOTIFY(pSync, msec, pStr) \
bsp_sync_notify(pSync)
#endif
/*__wait is TRUE, not run when create , wait cond_start to run*/
#define XMEDIA_THREAD_CREATE (pThread, __attr, __arg)\
bsp_thread_create(pThread, __attr, __arg)
#define XMEDIA_THREAD_JOIN(pThread, ppthread_return) \
bsp_thread_join(pThread, ppthread_return)
#define XMEDIA_THREAD_START(pThread) \
XMEDIA_THREAD_Start(pThread)
#define XMEDIA_THREAD_PAUSE(pThread) \
bsp_thread_pause(pThread)
#define XMEDIA_THREAD_SETID(pThread) \
bsp_thread_setid(pThread)
#define XMEDIA_THREAD_SETPRIORITY(pThread ,prio) \
bsp_thread_setpriority(pThread ,prio)
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */
#endif /* __XMEDIA_THREAD_H__ */