更多信息,请看这篇文章底部的更新。
https://github.com/intel/intel-cmt-cat
.
函数pqos_api_lock调用在unistd.h中定义的lockf,unistd.h包含在文件顶部的include中。但是,使用gdb进行调试时,我在下面的行中得到“lockf.c:No such file or directory”:
if (lockf(m_apilock, F_LOCK, 0) != 0)
err = 1;
find: âlockf.câ: No such file or directory
我包括unistd.h,为什么会出现这个错误?我在
https://code.woboq.org/userspace/glibc/io/lockf.c.html
--也许我可以将它链接到我的可执行文件中,尽管这听起来像是一个错误。
以下是pqos-api-lock的源代码:
#include <stdlib.h>
[ other includes omitted ]
void _pqos_api_lock(void)
{
int err = 0;
if (lockf(m_apilock, F_LOCK, 0) != 0)
err = 1;
if (pthread_mutex_lock(&m_apilock_mutex) != 0)
err = 1;
if (err)
LOG_ERROR("API lock error!\n");
}
cap.c的完整源代码有1722行,所以我没有在这里包括所有的代码,但是可以在上面的github链接中找到它——如果需要,请询问,我将全部发布。
我在Ubuntu 18.04上,和Clang一起编译。
更新:
在下面的回答中,Employed Russian显示“找不到源lockf.c”是一条gdb消息,表示它无法访问lockf.c。但是,现在出现了错误:
void _pqos_api_lock(void)
{
int err = 0;
if (lockf(m_apilock, F_LOCK, 0) != 0)
err = 1;
if (pthread_mutex_lock(&m_apilock_mutex) != 0)
err = 1;
if (err)
LOG_ERROR("API lock error!\n");
}
行“if(LOCK F(m_apilock,F_LOCK,0)!=0)“失败,因为根据gdb:
内锁
这看起来像是英特尔发布的程序中的一个错误。