gpt4 book ai didi

我可以包装 gcc 的原子内置函数吗?

转载 作者:行者123 更新时间:2023-11-30 15:38:56 33 4
gpt4 key购买 nike

如果线程与 Pthread 互斥锁/自旋锁同步,则可以轻松包装对 pthread_mutex_lock()pthread_mutex_unlock() 的调用,例如,使用 LD_PRELOAD。这对于日志记录/调试非常有用。

是否可以使用 gcc 的原子内置函数执行类似的操作,例如 __sync_fetch_and_add

我想我无法使用LD_PRELOAD,但也许存在其他一些机制。

最佳答案

我认为这是可能的,使用像英特尔的 PIN ( User Guide ) 这样的仪器 API。例如,您可以首先使用 INS_IsAtomicUpdate 检测执行原子更新的所有指令,并添加进一步的排除条件以启发式查找 __sync_fetch_and_add 生成的指令。

或者,您可以在每个 __sync_fetch_and_add 之前安装一系列带有 asm volatile block 的 NOP,专门查找该指令序列,并检测后面的机器代码(这必然是为 __sync_fetch_and_add 生成的代码)。

关于我可以包装 gcc 的原子内置函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21621430/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com