代码拉取完成,页面将自动刷新
#include <nxos.h>
#define TEST_THREAD_NR 32
NX_U32 ThreadHandler(void *arg)
{
NX_Size i;
int index = (int)arg;
NX_TlsSetValue(index, (void *) NX_ThreadGetCurrentId());
NX_U32 value = NX_TlsGetValue(index);
NX_Printf("thread tls:%d\n", value);
NX_ASSERT(value == NX_ThreadGetCurrentId());
NX_Printf("thread exit:%d\n", NX_ThreadGetCurrentId());
return 0;
}
NX_Error TEST_TLS(char *cmdline)
{
NX_Solt solt;
NX_Error err;
NX_Size i;
/* test all tls */
for (i = 0; i < NX_TLS_MAX_NR + 5; i++)
{
int index = NX_TlsAlloc();
if (index >= 0)
{
NX_TlsSetValue(index, (void *) i);
void * value = NX_TlsGetValue(index);
NX_Printf("tls:%p\n", value);
}
else
{
NX_Printf("index[%d] no tls!\n", i);
}
}
/* free tls */
for (i = 0; i < NX_TLS_MAX_NR + 5; i++)
{
err = NX_TlsFree(i);
if (err != NX_EOK)
{
NX_Printf("tls[%d] free failed!\n", i);
}
}
/* create some tls */
int tls = NX_TlsAlloc();
if (tls < 0)
{
NX_Printf("index[%d] no tls!\n", tls);
}
for (i = 0; i < TEST_THREAD_NR; i++)
{
solt = NX_ThreadCreate(NX_NULL, ThreadHandler, (void *)tls, 0);
if (solt < 0)
{
return NX_ERROR;
}
}
NX_ThreadSleep(3000);
// NX_ThreadWait(solt, NX_NULL);
NX_TlsFree(tls);
/* test errno value */
NX_ErrorSet(NX_EOK);
err = NX_ErrorGet();
NX_Printf("err:%d val:%d\n", err, NX_ErrorValue);
NX_ErrorSet(NX_ENOSRCH);
err = NX_ErrorGet();
NX_Printf("err:%d val:%d\n", err, NX_ErrorValue);
NX_ErrorSet(NX_EINVAL);
err = NX_ErrorGet();
NX_Printf("err:%d val:%d\n", err, NX_ErrorValue);
NX_TlsSetExtension((void *)0x12345678);
NX_Printf("extension:%p\n", NX_TlsGetExtension());
NX_Printf("test done!\n");
return NX_EOK;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。