2008-03-07 18:38:00

by Matthias Kaehlcke

[permalink] [raw]
Subject: [PATCH] drivers/pcmcia/soc_common.c: convert soc_pcmcia_sockets_lock in a mutex

drivers/pcmcia/soc_common.c: the semaphore soc_pcmcia_sockets_lock is
used as a mutex, convert it to the mutex API

Signed-off-by: Matthias Kaehlcke <[email protected]>

--

diff --git a/drivers/pcmcia/soc_common.c b/drivers/pcmcia/soc_common.c
index aa7779d..3490431 100644
--- a/drivers/pcmcia/soc_common.c
+++ b/drivers/pcmcia/soc_common.c
@@ -578,7 +578,7 @@ EXPORT_SYMBOL(soc_pcmcia_enable_irqs);


LIST_HEAD(soc_pcmcia_sockets);
-DECLARE_MUTEX(soc_pcmcia_sockets_lock);
+DEFINE_MUTEX(soc_pcmcia_sockets_lock);

static const char *skt_names[] = {
"PCMCIA socket 0",
@@ -601,11 +601,11 @@ soc_pcmcia_notifier(struct notifier_block *nb, unsigned long val, void *data)
struct cpufreq_freqs *freqs = data;
int ret = 0;

- down(&soc_pcmcia_sockets_lock);
+ mutex_lock(&soc_pcmcia_sockets_lock);
list_for_each_entry(skt, &soc_pcmcia_sockets, node)
if ( skt->ops->frequency_change )
ret += skt->ops->frequency_change(skt, val, freqs);
- up(&soc_pcmcia_sockets_lock);
+ mutex_unlock(&soc_pcmcia_sockets_lock);

return ret;
}
@@ -642,7 +642,7 @@ int soc_common_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops
struct soc_pcmcia_socket *skt;
int ret, i;

- down(&soc_pcmcia_sockets_lock);
+ mutex_lock(&soc_pcmcia_sockets_lock);

sinfo = kzalloc(SKT_DEV_INFO_SIZE(nr), GFP_KERNEL);
if (!sinfo) {
@@ -782,7 +782,7 @@ int soc_common_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops
kfree(sinfo);

out:
- up(&soc_pcmcia_sockets_lock);
+ mutex_unlock(&soc_pcmcia_sockets_lock);
return ret;
}

@@ -793,7 +793,7 @@ int soc_common_drv_pcmcia_remove(struct device *dev)

dev_set_drvdata(dev, NULL);

- down(&soc_pcmcia_sockets_lock);
+ mutex_lock(&soc_pcmcia_sockets_lock);
for (i = 0; i < sinfo->nskt; i++) {
struct soc_pcmcia_socket *skt = &sinfo->skt[i];

@@ -818,7 +818,7 @@ int soc_common_drv_pcmcia_remove(struct device *dev)
if (list_empty(&soc_pcmcia_sockets))
soc_pcmcia_cpufreq_unregister();

- up(&soc_pcmcia_sockets_lock);
+ mutex_unlock(&soc_pcmcia_sockets_lock);

kfree(sinfo);

diff --git a/drivers/pcmcia/soc_common.h b/drivers/pcmcia/soc_common.h
index 6f14126..a553df5 100644
--- a/drivers/pcmcia/soc_common.h
+++ b/drivers/pcmcia/soc_common.h
@@ -11,6 +11,7 @@

/* include the world */
#include <linux/cpufreq.h>
+#include <linux/mutex.h>
#include <pcmcia/cs_types.h>
#include <pcmcia/cs.h>
#include <pcmcia/ss.h>
@@ -133,7 +134,7 @@ extern void soc_common_pcmcia_get_timing(struct soc_pcmcia_socket *, struct soc_


extern struct list_head soc_pcmcia_sockets;
-extern struct semaphore soc_pcmcia_sockets_lock;
+extern struct mutex soc_pcmcia_sockets_lock;

extern int soc_common_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops, int first, int nr);
extern int soc_common_drv_pcmcia_remove(struct device *dev);

--
Matthias Kaehlcke
Linux System Developer
Barcelona

Tant qu'il y aura sur terre des hommes pour qui existe un concept
d' 'honneur national', la menace d'une nouvelle guerre subsistera
(B. Traven)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-


2008-03-07 19:18:04

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] drivers/pcmcia/soc_common.c: convert soc_pcmcia_sockets_lock in a mutex

On Fri, 7 Mar 2008 19:37:42 +0100 Matthias Kaehlcke <[email protected]> wrote:

> drivers/pcmcia/soc_common.c: the semaphore soc_pcmcia_sockets_lock is
> used as a mutex, convert it to the mutex API
>

I did this yesterday, when I saw it while grepping around due to your other
patch;)

> LIST_HEAD(soc_pcmcia_sockets);
> -DECLARE_MUTEX(soc_pcmcia_sockets_lock);
> +DEFINE_MUTEX(soc_pcmcia_sockets_lock);

I made this static.

> -extern struct semaphore soc_pcmcia_sockets_lock;
> +extern struct mutex soc_pcmcia_sockets_lock;

And deleted this.


drivers/pcmcia/soc_common.c | 15 ++++++++-------
drivers/pcmcia/soc_common.h | 1 -
2 files changed, 8 insertions(+), 8 deletions(-)

diff -puN drivers/pcmcia/soc_common.c~drivers-pcmcia-soc_commonc-convert-soc_pcmcia_sockets_lock-into-a-mutex-and-make-it-static drivers/pcmcia/soc_common.c
--- a/drivers/pcmcia/soc_common.c~drivers-pcmcia-soc_commonc-convert-soc_pcmcia_sockets_lock-into-a-mutex-and-make-it-static
+++ a/drivers/pcmcia/soc_common.c
@@ -37,6 +37,7 @@
#include <linux/kernel.h>
#include <linux/timer.h>
#include <linux/mm.h>
+#include <linux/mutex.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/spinlock.h>
@@ -578,7 +579,7 @@ EXPORT_SYMBOL(soc_pcmcia_enable_irqs);


LIST_HEAD(soc_pcmcia_sockets);
-DECLARE_MUTEX(soc_pcmcia_sockets_lock);
+static DEFINE_MUTEX(soc_pcmcia_sockets_lock);

static const char *skt_names[] = {
"PCMCIA socket 0",
@@ -601,11 +602,11 @@ soc_pcmcia_notifier(struct notifier_bloc
struct cpufreq_freqs *freqs = data;
int ret = 0;

- down(&soc_pcmcia_sockets_lock);
+ mutex_lock(&soc_pcmcia_sockets_lock);
list_for_each_entry(skt, &soc_pcmcia_sockets, node)
if ( skt->ops->frequency_change )
ret += skt->ops->frequency_change(skt, val, freqs);
- up(&soc_pcmcia_sockets_lock);
+ mutex_unlock(&soc_pcmcia_sockets_lock);

return ret;
}
@@ -642,7 +643,7 @@ int soc_common_drv_pcmcia_probe(struct d
struct soc_pcmcia_socket *skt;
int ret, i;

- down(&soc_pcmcia_sockets_lock);
+ mutex_lock(&soc_pcmcia_sockets_lock);

sinfo = kzalloc(SKT_DEV_INFO_SIZE(nr), GFP_KERNEL);
if (!sinfo) {
@@ -782,7 +783,7 @@ int soc_common_drv_pcmcia_probe(struct d
kfree(sinfo);

out:
- up(&soc_pcmcia_sockets_lock);
+ mutex_unlock(&soc_pcmcia_sockets_lock);
return ret;
}

@@ -793,7 +794,7 @@ int soc_common_drv_pcmcia_remove(struct

dev_set_drvdata(dev, NULL);

- down(&soc_pcmcia_sockets_lock);
+ mutex_lock(&soc_pcmcia_sockets_lock);
for (i = 0; i < sinfo->nskt; i++) {
struct soc_pcmcia_socket *skt = &sinfo->skt[i];

@@ -818,7 +819,7 @@ int soc_common_drv_pcmcia_remove(struct
if (list_empty(&soc_pcmcia_sockets))
soc_pcmcia_cpufreq_unregister();

- up(&soc_pcmcia_sockets_lock);
+ mutex_unlock(&soc_pcmcia_sockets_lock);

kfree(sinfo);

diff -puN drivers/pcmcia/soc_common.h~drivers-pcmcia-soc_commonc-convert-soc_pcmcia_sockets_lock-into-a-mutex-and-make-it-static drivers/pcmcia/soc_common.h
--- a/drivers/pcmcia/soc_common.h~drivers-pcmcia-soc_commonc-convert-soc_pcmcia_sockets_lock-into-a-mutex-and-make-it-static
+++ a/drivers/pcmcia/soc_common.h
@@ -133,7 +133,6 @@ extern void soc_common_pcmcia_get_timing


extern struct list_head soc_pcmcia_sockets;
-extern struct semaphore soc_pcmcia_sockets_lock;

extern int soc_common_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops, int first, int nr);
extern int soc_common_drv_pcmcia_remove(struct device *dev);
_

2008-03-07 21:38:19

by Daniel Walker

[permalink] [raw]
Subject: Re: [PATCH] drivers/pcmcia/soc_common.c: convert soc_pcmcia_sockets_lock in a mutex


On Fri, 2008-03-07 at 19:37 +0100, Matthias Kaehlcke wrote:
> extern struct list_head soc_pcmcia_sockets;
> -extern struct semaphore soc_pcmcia_sockets_lock;
> +extern struct mutex soc_pcmcia_sockets_lock;

If it's extern'ed I wonder where else it's getting used? If it's not
used anyplace else, may as werll remove the extern and make it static ..

Daniel

2008-03-07 22:11:33

by Matthias Kaehlcke

[permalink] [raw]
Subject: Re: [PATCH] drivers/pcmcia/soc_common.c: convert soc_pcmcia_sockets_lock in a mutex

El Fri, Mar 07, 2008 at 11:16:42AM -0800 Andrew Morton ha dit:

> On Fri, 7 Mar 2008 19:37:42 +0100 Matthias Kaehlcke <[email protected]> wrote:
>
> > drivers/pcmcia/soc_common.c: the semaphore soc_pcmcia_sockets_lock is
> > used as a mutex, convert it to the mutex API
> >
>
> I did this yesterday, when I saw it while grepping around due to your other
> patch;)

:)

--
Matthias Kaehlcke
Linux System Developer
Barcelona


Someone has said that it requires less mental effort to condemn than to think
(Emma Goldman)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-