在内核\include\linux\compiler.h
#define __acquire(x) __context__(x,1)
#define __release(x) __context__(x,-1)
Run Code Online (Sandbox Code Playgroud)
请帮助我理解,在上面的陈述中,我们试图通过context实现什么。我找不到它的详细信息。我在理解 linux 内核中的自旋锁实现时越过了它。
小智 1
来自http://linux.die.net/man/1/sparse:
-Wcontext 警告同步或其他分隔上下文中的潜在错误。Sparse 支持多种指定分隔上下文的函数或语句的方法,例如同步。具有扩展属性的函数 ( (context(expression,in_context,out_context)) 要求上下文表达式(例如,锁)在调用时具有值 in_context(一个常量非负整数),并返回值 out_context(一个常量非负整数)。对于通过宏定义的 API,请在宏主体中使用语句形式 上下文(表达式,in_value,out_value)。
使用 -Wcontext Sparse 会在看到函数更改上下文而不使用上下文属性指示这一点时发出警告,方法是将上下文减少到零以下(例如通过释放锁而不获取锁),或者返回更改后的上下文(例如通过获取锁而不释放它)。Sparse 还会对可能在不同上下文中执行的代码块发出警告。
Sparse 默认发出这些警告。要关闭它们,请使用 -Wno-context。