Commit 66656ebb authored by Daniel Walker's avatar Daniel Walker Committed by Linus Torvalds

docs: kernel-locking: Convert semaphore references

I converted some of the document to reflect mutex usage instead of
semaphore usage.  Since we shouldin't be promoting semaphore usage when
it's on it's way out..
Signed-off-by: default avatarDaniel Walker <dwalker@mvista.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent ec5b1157
...@@ -717,7 +717,7 @@ used, and when it gets full, throws out the least used one. ...@@ -717,7 +717,7 @@ used, and when it gets full, throws out the least used one.
<para> <para>
For our first example, we assume that all operations are in user For our first example, we assume that all operations are in user
context (ie. from system calls), so we can sleep. This means we can context (ie. from system calls), so we can sleep. This means we can
use a semaphore to protect the cache and all the objects within use a mutex to protect the cache and all the objects within
it. Here's the code: it. Here's the code:
</para> </para>
...@@ -725,7 +725,7 @@ it. Here's the code: ...@@ -725,7 +725,7 @@ it. Here's the code:
#include &lt;linux/list.h&gt; #include &lt;linux/list.h&gt;
#include &lt;linux/slab.h&gt; #include &lt;linux/slab.h&gt;
#include &lt;linux/string.h&gt; #include &lt;linux/string.h&gt;
#include &lt;asm/semaphore.h&gt; #include &lt;linux/mutex.h&gt;
#include &lt;asm/errno.h&gt; #include &lt;asm/errno.h&gt;
struct object struct object
...@@ -737,7 +737,7 @@ struct object ...@@ -737,7 +737,7 @@ struct object
}; };
/* Protects the cache, cache_num, and the objects within it */ /* Protects the cache, cache_num, and the objects within it */
static DECLARE_MUTEX(cache_lock); static DEFINE_MUTEX(cache_lock);
static LIST_HEAD(cache); static LIST_HEAD(cache);
static unsigned int cache_num = 0; static unsigned int cache_num = 0;
#define MAX_CACHE_SIZE 10 #define MAX_CACHE_SIZE 10
...@@ -789,17 +789,17 @@ int cache_add(int id, const char *name) ...@@ -789,17 +789,17 @@ int cache_add(int id, const char *name)
obj-&gt;id = id; obj-&gt;id = id;
obj-&gt;popularity = 0; obj-&gt;popularity = 0;
down(&amp;cache_lock); mutex_lock(&amp;cache_lock);
__cache_add(obj); __cache_add(obj);
up(&amp;cache_lock); mutex_unlock(&amp;cache_lock);
return 0; return 0;
} }
void cache_delete(int id) void cache_delete(int id)
{ {
down(&amp;cache_lock); mutex_lock(&amp;cache_lock);
__cache_delete(__cache_find(id)); __cache_delete(__cache_find(id));
up(&amp;cache_lock); mutex_unlock(&amp;cache_lock);
} }
int cache_find(int id, char *name) int cache_find(int id, char *name)
...@@ -807,13 +807,13 @@ int cache_find(int id, char *name) ...@@ -807,13 +807,13 @@ int cache_find(int id, char *name)
struct object *obj; struct object *obj;
int ret = -ENOENT; int ret = -ENOENT;
down(&amp;cache_lock); mutex_lock(&amp;cache_lock);
obj = __cache_find(id); obj = __cache_find(id);
if (obj) { if (obj) {
ret = 0; ret = 0;
strcpy(name, obj-&gt;name); strcpy(name, obj-&gt;name);
} }
up(&amp;cache_lock); mutex_unlock(&amp;cache_lock);
return ret; return ret;
} }
</programlisting> </programlisting>
...@@ -853,7 +853,7 @@ The change is shown below, in standard patch format: the ...@@ -853,7 +853,7 @@ The change is shown below, in standard patch format: the
int popularity; int popularity;
}; };
-static DECLARE_MUTEX(cache_lock); -static DEFINE_MUTEX(cache_lock);
+static spinlock_t cache_lock = SPIN_LOCK_UNLOCKED; +static spinlock_t cache_lock = SPIN_LOCK_UNLOCKED;
static LIST_HEAD(cache); static LIST_HEAD(cache);
static unsigned int cache_num = 0; static unsigned int cache_num = 0;
...@@ -870,22 +870,22 @@ The change is shown below, in standard patch format: the ...@@ -870,22 +870,22 @@ The change is shown below, in standard patch format: the
obj-&gt;id = id; obj-&gt;id = id;
obj-&gt;popularity = 0; obj-&gt;popularity = 0;
- down(&amp;cache_lock); - mutex_lock(&amp;cache_lock);
+ spin_lock_irqsave(&amp;cache_lock, flags); + spin_lock_irqsave(&amp;cache_lock, flags);
__cache_add(obj); __cache_add(obj);
- up(&amp;cache_lock); - mutex_unlock(&amp;cache_lock);
+ spin_unlock_irqrestore(&amp;cache_lock, flags); + spin_unlock_irqrestore(&amp;cache_lock, flags);
return 0; return 0;
} }
void cache_delete(int id) void cache_delete(int id)
{ {
- down(&amp;cache_lock); - mutex_lock(&amp;cache_lock);
+ unsigned long flags; + unsigned long flags;
+ +
+ spin_lock_irqsave(&amp;cache_lock, flags); + spin_lock_irqsave(&amp;cache_lock, flags);
__cache_delete(__cache_find(id)); __cache_delete(__cache_find(id));
- up(&amp;cache_lock); - mutex_unlock(&amp;cache_lock);
+ spin_unlock_irqrestore(&amp;cache_lock, flags); + spin_unlock_irqrestore(&amp;cache_lock, flags);
} }
...@@ -895,14 +895,14 @@ The change is shown below, in standard patch format: the ...@@ -895,14 +895,14 @@ The change is shown below, in standard patch format: the
int ret = -ENOENT; int ret = -ENOENT;
+ unsigned long flags; + unsigned long flags;
- down(&amp;cache_lock); - mutex_lock(&amp;cache_lock);
+ spin_lock_irqsave(&amp;cache_lock, flags); + spin_lock_irqsave(&amp;cache_lock, flags);
obj = __cache_find(id); obj = __cache_find(id);
if (obj) { if (obj) {
ret = 0; ret = 0;
strcpy(name, obj-&gt;name); strcpy(name, obj-&gt;name);
} }
- up(&amp;cache_lock); - mutex_unlock(&amp;cache_lock);
+ spin_unlock_irqrestore(&amp;cache_lock, flags); + spin_unlock_irqrestore(&amp;cache_lock, flags);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment