Ver Fonte

docs: convert kref semaphore to mutex

Just converting this documentation semaphore reference, since we don't
want to promote semaphore usage.

Signed-off-by: Daniel Walker <dwalker@mvista.com>
Acked-by: Corey Minyard <minyard@acm.org>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Daniel Walker há 17 anos atrás
pai
commit
1373bed34e
1 ficheiros alterados com 10 adições e 10 exclusões
  1. 10 10
      Documentation/kref.txt

+ 10 - 10
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
 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
 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
 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);
 static LIST_HEAD(q);
 struct my_data
 struct my_data
 {
 {
@@ -155,12 +155,12 @@ struct my_data
 static struct my_data *get_entry()
 static struct my_data *get_entry()
 {
 {
 	struct my_data *entry = NULL;
 	struct my_data *entry = NULL;
-	down(&sem);
+	mutex_lock(&mutex);
 	if (!list_empty(&q)) {
 	if (!list_empty(&q)) {
 		entry = container_of(q.next, struct my_q_entry, link);
 		entry = container_of(q.next, struct my_q_entry, link);
 		kref_get(&entry->refcount);
 		kref_get(&entry->refcount);
 	}
 	}
-	up(&sem);
+	mutex_unlock(&mutex);
 	return entry;
 	return entry;
 }
 }
 
 
@@ -174,9 +174,9 @@ static void release_entry(struct kref *ref)
 
 
 static void put_entry(struct my_data *entry)
 static void put_entry(struct my_data *entry)
 {
 {
-	down(&sem);
+	mutex_lock(&mutex);
 	kref_put(&entry->refcount, release_entry);
 	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
 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)
 static void put_entry(struct my_data *entry)
 {
 {
-	down(&sem);
+	mutex_lock(&mutex);
 	if (kref_put(&entry->refcount, release_entry)) {
 	if (kref_put(&entry->refcount, release_entry)) {
 		list_del(&entry->link);
 		list_del(&entry->link);
-		up(&sem);
+		mutex_unlock(&mutex);
 		kfree(entry);
 		kfree(entry);
 	} else
 	} else
-		up(&sem);
+		mutex_unlock(&mutex);
 }
 }
 
 
 This is really more useful if you have to call other routines as part
 This is really more useful if you have to call other routines as part