diff options
author | trz <trz> | 2006-09-21 21:19:06 +0000 |
---|---|---|
committer | trz <trz> | 2006-09-21 21:19:06 +0000 |
commit | 77c3c4b3a6065638ddf6a6ec45b9694fff40bc0a (patch) | |
tree | 625a24acc417adc58bfe6dedd63637f7cefc52c3 /runtime | |
parent | 8abe0c138937e37b9efd93a8ace12f960e38c010 (diff) | |
download | systemtap-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/ChangeLog | 7 | ||||
-rw-r--r-- | runtime/transport/relayfs.c | 22 |
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); |