34#include <lwip/debug.h>
50#ifdef LOSCFG_KERNEL_SMP
56#define ROUND_UP_DIV(val, div) (((val) + (div) - 1) / (div))
64 UINT32 taskID = LOS_ERRNO_TSK_ID_INVALID;
71 task.
pcName = (
char *)name;
74 task.
uwResved = LOS_TASK_STATUS_DETACHED;
77 LWIP_DEBUGF(SYS_DEBUG, (
"sys_thread_new: LOS_TaskCreate error %u\n", ret));
95 return (u32_t)((
LOS_TickCountGet() * OS_SYS_MS_PER_SECOND) / LOSCFG_BASE_CORE_TICK_PER_SECOND);
98#if (LWIP_CHKSUM_ALGORITHM == 4)
102 return ~(u16_t)(
in_cksum(dataptr, len));
113#ifdef LOSCFG_KERNEL_SMP
137 LWIP_UNUSED_ARG(pval);
138#ifdef LOSCFG_KERNEL_SMP
158 CHAR qName[] =
"lwIP";
163 case LOS_ERRNO_QUEUE_CB_UNAVAILABLE:
164 case LOS_ERRNO_QUEUE_CREATE_NO_MEMORY:
169 LWIP_DEBUGF(SYS_DEBUG, (
"%s: LOS_QueueCreate error %u\n", __FUNCTION__, ret));
178 LWIP_DEBUGF(SYS_DEBUG, (
"%s: LOS_QueueWrite error %u\n", __FUNCTION__, ret));
189 case LOS_ERRNO_QUEUE_ISFULL:
194 LWIP_DEBUGF(SYS_DEBUG, (
"%s: LOS_QueueWrite error %u\n", __FUNCTION__, ret));
203 UINT64 tick = ROUND_UP_DIV((
UINT64)timeoutMs * LOSCFG_BASE_CORE_TICK_PER_SECOND, OS_SYS_MS_PER_SECOND);
208 case LOS_ERRNO_QUEUE_ISEMPTY:
209 case LOS_ERRNO_QUEUE_TIMEOUT:
210 return SYS_ARCH_TIMEOUT;
214 LWIP_DEBUGF(SYS_DEBUG, (
"%s: LOS_QueueRead error %u\n", __FUNCTION__, ret));
215 return SYS_ARCH_TIMEOUT;
225 case LOS_ERRNO_QUEUE_ISEMPTY:
226 return SYS_MBOX_EMPTY;
227 case LOS_ERRNO_QUEUE_TIMEOUT:
228 return SYS_ARCH_TIMEOUT;
232 LWIP_DEBUGF(SYS_DEBUG, (
"%s: LOS_QueueRead error %u\n", __FUNCTION__, ret));
233 return SYS_MBOX_EMPTY;
249 *mbox = LOSCFG_BASE_IPC_QUEUE_LIMIT;
274 UINT64 tick = ROUND_UP_DIV((
UINT64)timeoutMs * LOSCFG_BASE_CORE_TICK_PER_SECOND, OS_SYS_MS_PER_SECOND);
279 case LOS_ERRNO_SEM_TIMEOUT:
280 return SYS_ARCH_TIMEOUT;
284 LWIP_DEBUGF(SYS_DEBUG, (
"%s: LOS_SemPend error %u\n", __FUNCTION__, ret));
285 return SYS_ARCH_TIMEOUT;
295 return *sem != LOSCFG_BASE_IPC_SEM_LIMIT;
300 *sem = LOSCFG_BASE_IPC_SEM_LIMIT;
macro EXC_SP_SET stackSize
LITE_OS_SEC_TEXT UINT32 LOS_MuxInit(LosMux *mutex, const LosMuxAttr *attr)
初始化互斥锁
LITE_OS_SEC_TEXT UINT32 LOS_MuxUnlock(LosMux *mutex)
释放锁
LITE_OS_SEC_TEXT UINT32 LOS_MuxDestroy(LosMux *mutex)
销毁互斥锁
LITE_OS_SEC_TEXT UINT32 LOS_MuxLock(LosMux *mutex, UINT32 timeout)
拿互斥锁,
LITE_OS_SEC_TEXT_MINOR UINT32 LOS_QueueInfoGet(UINT32 queueID, QUEUE_INFO_S *queueInfo)
外部接口, 获取队列信息,用queueInfo 把 LosQueueCB数据接走,QUEUE_INFO_S对内部数据的封装
LITE_OS_SEC_TEXT_INIT UINT32 LOS_QueueCreate(CHAR *queueName, UINT16 len, UINT32 *queueID, UINT32 flags, UINT16 maxMsgSize)
创建一个队列,根据用户传入队列长度和消息节点大小来开辟相应的内存空间以供该队列使用,参数queueID带走队列ID
LITE_OS_SEC_TEXT_INIT UINT32 LOS_QueueDelete(UINT32 queueID)
Delete a queue.
LITE_OS_SEC_TEXT UINT32 LOS_QueueRead(UINT32 queueID, VOID *bufferAddr, UINT32 bufferSize, UINT32 timeout)
Read a queue.
LITE_OS_SEC_TEXT UINT32 LOS_QueueWrite(UINT32 queueID, VOID *bufferAddr, UINT32 bufferSize, UINT32 timeout)
Write data into a queue.
LITE_OS_SEC_TEXT_INIT UINT32 LOS_SemCreate(UINT16 count, UINT32 *semHandle)
对外接口 创建信号量
LITE_OS_SEC_TEXT UINT32 LOS_SemPost(UINT32 semHandle)
对外接口 释放指定的信号量
LITE_OS_SEC_TEXT UINT32 LOS_SemPend(UINT32 semHandle, UINT32 timeout)
对外接口 申请指定的信号量,并设置超时时间
LITE_OS_SEC_TEXT_INIT UINT32 LOS_SemDelete(UINT32 semHandle)
对外接口 删除指定的信号量,参数就是 semID
LITE_OS_SEC_TEXT_MINOR UINT64 LOS_TickCountGet(VOID)
获取自系统启动以来的Tick数
LITE_OS_SEC_TEXT_MINOR VOID LOS_TaskUnlock(VOID)
Unlock the task scheduling.
LITE_OS_SEC_TEXT UINT32 LOS_CurTaskIDGet(VOID)
Obtain current running task ID.
LITE_OS_SEC_TEXT_MINOR VOID LOS_TaskLock(VOID)
Lock the task scheduling.
LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskCreate(UINT32 *taskID, TSK_INIT_PARAM_S *initParam)
创建任务,并使该任务进入ready状态,如果就绪队列中没有更高优先级的任务,则运行该任务
VOID *(* TSK_ENTRY_FUNC)(UINTPTR param1, UINTPTR param2, UINTPTR param3, UINTPTR param4)
Define the type of a task entrance function.
LITE_OS_SEC_TEXT_MINOR VOID LOS_GetCpuCycle(UINT32 *highCnt, UINT32 *lowCnt)
获取自系统启动以来的Cycle数
unsigned short in_cksum(const void *buf, int len)
LITE_OS_SEC_TEXT BOOL LOS_MuxIsValid(const LosMux *mutex)
互斥锁是否有效
VOID LOS_SpinLock(SPIN_LOCK_S *lock)
VOID LOS_SpinUnlock(SPIN_LOCK_S *lock)
void srand(unsigned s)
初始化随机数生成器
TSK_ENTRY_FUNC pfnTaskEntry
int sys_sem_valid(sys_sem_t *sem)
void sys_mutex_free(sys_mutex_t *mutex)
SPIN_LOCK_INIT(arch_protect_spin)
err_t sys_mutex_new(sys_mutex_t *mutex)
void sys_mutex_set_invalid(sys_mutex_t *mutex)
void sys_sem_set_invalid(sys_sem_t *sem)
u16_t lwip_standard_chksum(const void *dataptr, int len)
void sys_mutex_lock(sys_mutex_t *mutex)
void sys_mbox_set_invalid(sys_mbox_t *mbox)
void sys_mutex_unlock(sys_mutex_t *mutex)
sys_prot_t sys_arch_protect(void)
sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stackSize, int prio)
void sys_sem_free(sys_sem_t *sem)
void sys_arch_unprotect(sys_prot_t pval)
int sys_mbox_valid(sys_mbox_t *mbox)
队列是否有效
void sys_mbox_post(sys_mbox_t *mbox, void *msg)
发送消息,参数2不能为空,直到发送成功为止
err_t sys_mbox_trypost(sys_mbox_t *mbox, void *msg)
尝试发送消息
void sys_sem_signal(sys_sem_t *sem)
err_t sys_mbox_new(sys_mbox_t *mbox, int size)
void sys_mbox_free(sys_mbox_t *mbox)
删除队列
u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeoutMs)
static u32_t lwprot_thread
int sys_mutex_valid(sys_mutex_t *mutex)
err_t sys_mbox_trypost_fromisr(sys_mbox_t *mbox, void *msg)
u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeoutMs)
err_t sys_sem_new(sys_sem_t *sem, u8_t count)
u32_t sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg)
尝试都消息
ARG_NUM_3 ARG_NUM_1 ARG_NUM_2 ARG_NUM_2 ARG_NUM_3 ARG_NUM_1 ARG_NUM_4 ARG_NUM_2 ARG_NUM_2 ARG_NUM_5 ARG_NUM_2 void