Linux SPARSE checker discussions
 help / color / mirror / Atom feed
* contextual attributes
@ 2008-11-17 21:47 Yoann Padioleau
  2008-11-17 22:10 ` Johannes Berg
  0 siblings, 1 reply; 2+ messages in thread
From: Yoann Padioleau @ 2008-11-17 21:47 UTC (permalink / raw)
  To: linux-sparse



Hi, 

Is it possible by using the __attribute((context(x,y)) sparse
attribute to enforce statically that all the callers of 
certain functions do certain actions such as disabling interrupts ?

I would like an attribute like __assume_disabled_interrupt and 
have such programs:


int __assume_disabled_interrupt    
startpoint() 
{
	return 1;
}


int f1ok()
{
	spin_lock_irq();
	startpoint();
	spin_unlock_irq();
}


int f1bad()
{
	startpoint();
}


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: contextual attributes
  2008-11-17 21:47 contextual attributes Yoann Padioleau
@ 2008-11-17 22:10 ` Johannes Berg
  0 siblings, 0 replies; 2+ messages in thread
From: Johannes Berg @ 2008-11-17 22:10 UTC (permalink / raw)
  To: Yoann Padioleau; +Cc: linux-sparse

On Mon, 2008-11-17 at 15:47 -0600, Yoann Padioleau wrote:

> Is it possible by using the __attribute((context(x,y)) sparse
> attribute to enforce statically that all the callers of 
> certain functions do certain actions such as disabling interrupts ?

In theory yes, but only half my patches got merged so no. If you search
the list you'll find a set of patches from myself that allow you to do
this, see below.

I have asked that those patches that got merged are reverted for the
time being until we can work on a decent implementation, but that hasn't
happen either so the current sparse git tree is fairly broken wrt.
context attributes...

> int __assume_disabled_interrupt    
> startpoint() 
> {
> 	return 1;
> }
> 
> 
> int f1ok()
> {
> 	spin_lock_irq();
> 	startpoint();
> 	spin_unlock_irq();
> }
> 
> 
> int f1bad()
> {
> 	startpoint();
> }

You'd have to annotate startpoint() with
__attribute__((context(irqsoff,1,1)))

and spin_lock_irq() with __attribute__((context(irqsoff,0,1))) and 1,0
for unlock, in addition to the regular locks.

[or something like that, the syntax isn't firm in my mind right now]

johannes


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-11-17 22:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-17 21:47 contextual attributes Yoann Padioleau
2008-11-17 22:10 ` Johannes Berg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox