Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Kernel v2.6.25-rc7 /Documentation/kref.txt

Filename:/Documentation/kref.txt
Lines Added:10
Lines Deleted:10
Also changed in: (Previous) 2.6.25-rc6  2.6.25-rc5  2.6.25-rc4  2.6.25-rc3  2.6.25-rc2  2.6.25-rc1 
(Following) 2.6.25-rc8  2.6.25-rc9  2.6.25 

Location
[  2.6.25-rc7
  [  Documentation
     o  kref.txt

Patch

diff --git a/Documentation/kref.txt b/Documentation/kref.txt
index f38b59d..130b6e8 100644
--- a/Documentation/kref.txt
+++ b/Documentation/kref.txt
@@ -141,10 +141,10 @@ The last rule (rule 3) is the nastiest one to handle.  Say, for
 instance, you have a list of items that are each kref-ed, and you wish
 to get the first one.  You can't just pull the first item off the list
 and kref_get() it.  That violates rule 3 because you are not already
-holding a valid pointer.  You must add locks or semaphores.  For
-instance:
+holding a valid pointer.  You must add a mutex (or some other lock).
+For instance:
 
-static DECLARE_MUTEX(sem);
+static DEFINE_MUTEX(mutex);
 static LIST_HEAD(q);
 struct my_data
 {
@@ -155,12 +155,12 @@ struct my_data
 static struct my_data *get_entry()
 {
    struct my_data *entry = NULL;
-   down(&sem);
+   mutex_lock(&mutex);
    if (!list_empty(&q)) {
       entry = container_of(q.next, struct my_q_entry, link);
       kref_get(&entry->refcount);
    }
-   up(&sem);
+   mutex_unlock(&mutex);
    return entry;
 }
 
@@ -174,9 +174,9 @@ static void release_entry(struct kref *ref)
 
 static void put_entry(struct my_data *entry)
 {
-   down(&sem);
+   mutex_lock(&mutex);
    kref_put(&entry->refcount, release_entry);
-   up(&sem);
+   mutex_unlock(&mutex);
 }
 
 The kref_put() return value is useful if you do not want to hold the
@@ -191,13 +191,13 @@ static void release_entry(struct kref *ref)
 
 static void put_entry(struct my_data *entry)
 {
-   down(&sem);
+   mutex_lock(&mutex);
    if (kref_put(&entry->refcount, release_entry)) {
       list_del(&entry->link);
-      up(&sem);
+      mutex_unlock(&mutex);
       kfree(entry);
    } else
-      up(&sem);
+      mutex_unlock(&mutex);
 }
 
 This is really more useful if you have to call other routines as part


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.