UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Visitor wanquantilkk
Visitor
176 次查看
注册日期: ‎10-08-2018

有关lwip的问题,XilKernel中条件变量pthread_cond_t无法链接到函数定义

条件变量pthread_cond_t

 

在SDK的pthread.h中定义了一系列关于thread的一系列函数。

比如关于锁的:

/*  Locking and Unlocking a Mutex, P1003.1c/Draft 10, p. 93

    NOTE: P1003.4b/D8 adds pthread_mutex_timedlock(), p. 29 */

 

int _EXFUN(pthread_mutex_lock, (pthread_mutex_t *__mutex));

int _EXFUN(pthread_mutex_trylock, (pthread_mutex_t *__mutex));

int _EXFUN(pthread_mutex_unlock, (pthread_mutex_t *__mutex));

 

这几个函数是可以链接到他们自己的函数定义的,在MicroBlaze的syscall/libpthread.c文件中可以找到。

 

int pthread_mutex_lock (pthread_mutex_t *mutex)

{

    return (int) make_syscall ((void*)mutex, NULL, NULL, NULL, NULL, SC_PTHREAD_MUTEX_LOCK);

}

 

int pthread_mutex_trylock (pthread_mutex_t *mutex)

{

    return (int) make_syscall ((void*)mutex, NULL, NULL, NULL, NULL, SC_PTHREAD_MUTEX_TRYLOCK);

}

 

int  pthread_mutex_unlock (pthread_mutex_t *mutex)

{

    return (int) make_syscall ((void*)mutex, NULL, NULL, NULL, NULL, SC_PTHREAD_MUTEX_UNLOCK);

}

 

但是对于条件变量的相关内容,只存在于SDK的pthread.h中:

1231241243.png

无法链接到他们的函数定义,也就是说我我目前工程中的xilkernel是不支持条件变量机制的。其实如图上所示,SDK主动给条件变量相关的函数打上了阴影,可能也在暗示这几个函数找不到定义吧。也许当我们加载xilkernel包的时候,对其参数进行配置一番可以解决这个问题,但就目前为止,我翻遍了所有参数,仍未找到解决办法。

目前解决问题的方向,查找xilkernelthread的其他函数,自己尝试实现一套进程的挂起和唤醒机制,用于替代掉线程之间同步的条件变量。

0 项奖励
1 条回复1
Xilinx Employee
Xilinx Employee
122 次查看
注册日期: ‎05-11-2010

回复: 有关lwip的问题,XilKernel中条件变量pthread_cond_t无法链接到函数定义

xilkernel已经从sdk里面去掉了,建议你使用freeRtos。

0 项奖励