summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authortrz <trz>2006-09-21 21:19:06 +0000
committertrz <trz>2006-09-21 21:19:06 +0000
commit77c3c4b3a6065638ddf6a6ec45b9694fff40bc0a (patch)
tree625a24acc417adc58bfe6dedd63637f7cefc52c3 /runtime
parent8abe0c138937e37b9efd93a8ace12f960e38c010 (diff)
downloadsystemtap-steved-77c3c4b3a6065638ddf6a6ec45b9694fff40bc0a.tar.gz
systemtap-steved-77c3c4b3a6065638ddf6a6ec45b9694fff40bc0a.tar.xz
systemtap-steved-77c3c4b3a6065638ddf6a6ec45b9694fff40bc0a.zip
Use semaphore if mutex not available
Diffstat (limited to 'runtime')
-rw-r--r--runtime/transport/ChangeLog7
-rw-r--r--runtime/transport/relayfs.c22
2 files changed, 27 insertions, 2 deletions
diff --git a/runtime/transport/ChangeLog b/runtime/transport/ChangeLog
index 969f6fb0..9163941a 100644
--- a/runtime/transport/ChangeLog
+++ b/runtime/transport/ChangeLog
@@ -1,3 +1,10 @@
+2006-09-21 Tom Zanussi <zanussi@us.ibm.com>
+
+ * relayfs.c (_stp_get_relay_root): Call new mutex lock/unlock
+ wrappers instead.
+ (_stp_lock_inode): New.
+ (_stp_unlock_inode): New.
+
2006-09-19 Tom Zanussi <zanussi@us.ibm.com>
* procfs.c (_stp_get_proc_root): Removed.
diff --git a/runtime/transport/relayfs.c b/runtime/transport/relayfs.c
index defe0087..1b616b7e 100644
--- a/runtime/transport/relayfs.c
+++ b/runtime/transport/relayfs.c
@@ -137,6 +137,24 @@ static void _stp_remove_relay_dir(struct dentry *dir)
#endif
}
+static inline void _stp_lock_inode(struct inode *inode)
+{
+#ifdef DEFINE_MUTEX
+ mutex_lock(&inode->i_mutex);
+#else
+ down(&inode->i_sem);
+#endif
+}
+
+static inline void _stp_unlock_inode(struct inode *inode)
+{
+#ifdef DEFINE_MUTEX
+ mutex_unlock(&inode->i_mutex);
+#else
+ up(&inode->i_sem);
+#endif
+}
+
static struct dentry *_stp_get_relay_root(void)
{
struct file_system_type *fs;
@@ -157,9 +175,9 @@ static struct dentry *_stp_get_relay_root(void)
return NULL;
sb = list_entry(fs->fs_supers.next, struct super_block, s_instances);
- mutex_lock(&sb->s_root->d_inode->i_mutex);
+ _stp_lock_inode(sb->s_root->d_inode);
root = lookup_one_len(dirname, sb->s_root, strlen(dirname));
- mutex_unlock(&sb->s_root->d_inode->i_mutex);
+ _stp_unlock_inode(sb->s_root->d_inode);
if (!IS_ERR(root))
dput(root);