取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Visitor
Visitor
225 次查看
注册日期: ‎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
Highlighted
Xilinx Employee
Xilinx Employee
171 次查看
注册日期: ‎05-11-2010

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

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

0 项奖励