lkml.org 
[lkml]   [2007]   [Feb]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subjectsuggestion for lock debugging.
While playing around with lockdep (nice tool!) I thought
it might be nice to store the file-name and line where
the lock was acquired. For the generic case, this could be done
with the __FILE__ and __LINE__ compiler macros, but for highly interesting
locks (ie, rtnl in my case), you could pass in the __FILE__ and __LINE__
where rtnl_lock() is called, something like:


+++ b/include/linux/rtnetlink.h
@@ -1042,7 +1042,8 @@ __rta_reserve(struct sk_buff *skb, int attrtype, int attrlen)
extern void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change);

/* RTNL is used as a global lock for all changes to network configuration */
-extern void rtnl_lock(void);
+#define rtnl_lock() __rtnl_lock(__FILE__, __LINE__);
+extern void __rtnl_lock(const char* fname, int fline);
extern void rtnl_unlock(void);
extern int rtnl_trylock(void);

/* pass this off to lockdep and have it store the info for
* later printing, instead of this current hack below that stores
* it in a global variable...
*/
+void __rtnl_lock(const char* fname, int fline)
{
mutex_lock(&rtnl_mutex);
+ rtnl_locked_fname = fname;
+ rtnl_locked_fline = fline;
}

I have a hacked up patch that allows lockdep to save and print
this info, but I'm not clear on exactly how to pass the fname, fline info
through mutex_lock and on to lockdep's methods....
Thanks,
Ben


--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-02-14 03:45    [W:0.027 / U:0.092 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site