From 9a89c4f599160d2e2218c51ce577f18d2e2c651e Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Wed, 16 Jan 2008 09:51:58 +0100 Subject: [PATCH] --- yaml --- r: 75521 b: refs/heads/master c: eb13ba873881abd5e15af784756a61af635e665e h: refs/heads/master i: 75519: b8e1b9d14d6275e6a1db501b88abc908d192d415 v: v3 --- [refs] | 2 +- trunk/include/linux/workqueue.h | 14 +++++++++++--- trunk/kernel/workqueue.c | 5 +++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 0d740eb1dd3e..ebd8b5e7f5ea 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5a26db5bd25cf4bf32ae9fa9f6136b6b6d5b45c5 +refs/heads/master: eb13ba873881abd5e15af784756a61af635e665e diff --git a/trunk/include/linux/workqueue.h b/trunk/include/linux/workqueue.h index 7daafdc2514b..7f28c32d9aca 100644 --- a/trunk/include/linux/workqueue.h +++ b/trunk/include/linux/workqueue.h @@ -149,19 +149,27 @@ struct execute_work { extern struct workqueue_struct * __create_workqueue_key(const char *name, int singlethread, - int freezeable, struct lock_class_key *key); + int freezeable, struct lock_class_key *key, + const char *lock_name); #ifdef CONFIG_LOCKDEP #define __create_workqueue(name, singlethread, freezeable) \ ({ \ static struct lock_class_key __key; \ + const char *__lock_name; \ + \ + if (__builtin_constant_p(name)) \ + __lock_name = (name); \ + else \ + __lock_name = #name; \ \ __create_workqueue_key((name), (singlethread), \ - (freezeable), &__key); \ + (freezeable), &__key, \ + __lock_name); \ }) #else #define __create_workqueue(name, singlethread, freezeable) \ - __create_workqueue_key((name), (singlethread), (freezeable), NULL) + __create_workqueue_key((name), (singlethread), (freezeable), NULL, NULL) #endif #define create_workqueue(name) __create_workqueue((name), 0, 0) diff --git a/trunk/kernel/workqueue.c b/trunk/kernel/workqueue.c index 52d5e7c9a8e6..8db0b597509e 100644 --- a/trunk/kernel/workqueue.c +++ b/trunk/kernel/workqueue.c @@ -722,7 +722,8 @@ static void start_workqueue_thread(struct cpu_workqueue_struct *cwq, int cpu) struct workqueue_struct *__create_workqueue_key(const char *name, int singlethread, int freezeable, - struct lock_class_key *key) + struct lock_class_key *key, + const char *lock_name) { struct workqueue_struct *wq; struct cpu_workqueue_struct *cwq; @@ -739,7 +740,7 @@ struct workqueue_struct *__create_workqueue_key(const char *name, } wq->name = name; - lockdep_init_map(&wq->lockdep_map, name, key, 0); + lockdep_init_map(&wq->lockdep_map, lock_name, key, 0); wq->singlethread = singlethread; wq->freezeable = freezeable; INIT_LIST_HEAD(&wq->list);