fineamy 发表于 2006-11-6 12:06:26

再一条奇怪的宏定义!

# define __acquires(x)        __attribute__((context(0,1)))

哪位DX解释下这里的"context(0,1)"何意,GCC竟然没有!

fineamy 发表于 2006-11-17 01:04:52

还待高人指教

The lock annotation macros __acquires, __releases, __acquire, and __release
all currently throw away the lock expression passed as an argument.Now that
sparse can parse __context__ and __attribute__((context)) with a context
expression, pass the lock expression down to sparse as the context expression.
This requires a version of sparse from GIT commit

另外这里的sparse资料
发表者: kenjoy 2006年11月16日 #239

http://cn.iventor.org/blog/kenjoy/239.html


Sparse一直以来都是很神秘的linux工具. 它是一种静态分析工具(static analysis tool), 用于在linux内核源代码中发现各种类型的漏洞. 它很有效, 但不容易找到它的程序, 它过去甚至都没有过一个正式的网页. 不过感兴趣的朋友可以从Dave Jone的git树快照中获得Sparse的源程序.

Sprase最初是由Linus Torvalds编写的, 后来linus没有继续维护. 最近Linus说到将有人来接管这个项目(下面是Linus的一段谈话):

我想我不再是sparse的维护者会好些, 简单理由是我很关注它(Sparse)能做的事情, 但结果我做的太少. 在经过一番讨论后, sparse有了新的维护者: Josh Triplett. Josh写了Sparse的0.1版和后续的版本. 而且他还为sparse建立了一个新的git树(git tree), 甚至, 一个网页.

Josh很乐意解决sparse的一些问题. 早在博士阶段他的部分工作就是研究sparse, 目标是提高sparse正确使用读/写锁定方法(RCU Primitives). 然后暑假在IBM与Paul McKenney继续提高sparse的RCU verification(RCU确认)能力.

因此, 近来他首要的任务是继续RCU方面的工作. 这也扩展到了Locking Verification(锁定确认)方面. 一些必要的注解和结果修订已经添加到2.6.18和2.6.19-rc内核中. Josh计划排除所有错误和减少干搅. 接着, 其它开发人员提交各自补丁, 然后这些补丁经过一段时间的测试确认后加入到sparse中.

在项目管理其间, Josh说:
我计划继续维护sparse的发行, 我想使sparse能出现在不同的操作系统发行版中, 至少在测试或相同阶段. 任何软件包发行人员, 我们欢迎您加入linux-sparse邮件列表, 请让我知道我能帮助什么或者使事情变的更好.

使sparse加入到系统发行版中不仅能提高使用率, 而且还能减少存在的漏洞. 这将会变成事实, 如果josh成功实现他的另外一个目标: 推广sparse从内核到应用程序项目的广泛使用. X.org将可能是sparse早期的采用者.

Josh的长期目标是希望能学习更多的高级技术, 从而能检测更大的程序, 发现更多潜在的漏洞. 这里面的部分工作将需要吸引对静态分析技术感兴趣的研究人员加入. Josh说:
我感到linux内核和用户空间(user-space)代码中存在的几类漏洞将不会存在, 因为现在的工具几乎能够发现和消除他们. 这些漏洞包括: “scheduling while atomic”, __init-related bugs, errors on error paths和许多locking相关的漏洞.

我们仅能想到的是自由软件用户都希望Josh能尽全力追捕和消除所有这些不应存在的漏洞.

参考:
Kernel Space: Sparse gets a maintainer


备注:
您是Linux内核的爱好者吗? 我们(创新者小组, cn.iventor.org)维护着一个linux内核相关的博客群, 我们邀请你来与大家分享你的内核学习体验, 团结就是力量. 请联系
Ken Joy <http://cn.iventor.org/blog/kenjoy>, 谢谢.
页: [1]
查看完整版本: 再一条奇怪的宏定义!