diff options
author | Bhaktipriya Shridhar <bhaktipriya96@gmail.com> | 2016-08-13 12:46:24 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-08-15 11:00:45 -0400 |
commit | 1beba52d46f039a24f31cf5717c239c89a9d4e6f (patch) | |
tree | 6bf2b8e0615699328bbc621d9128d85e2fc7732e /drivers/android | |
parent | 6a9aabb107c65ecb6f08b010853f5571d781ba5a (diff) |
android: binder: Remove deprecated create_singlethread_workqueue
The workqueue is being used to run deferred work for the android binder.
The "binder_deferred_workqueue" queues only a single work item and hence
does not require ordering. Also, this workqueue is not being used on a
memory recliam path. Hence, the singlethreaded workqueue has been
replaced with the use of system_wq.
System workqueues have been able to handle high level of concurrency
for a long time now and hence it's not required to have a singlethreaded
workqueue just to gain concurrency. Unlike a dedicated per-cpu workqueue
created with create_singlethread_workqueue(), system_wq allows multiple
work items to overlap executions even on the same CPU; however, a
per-cpu workqueue doesn't have any CPU locality or global ordering
guarantee unless the target CPU is explicitly specified and thus the
increase of local concurrency shouldn't make any difference.
Signed-off-by: Bhaktipriya Shridhar <bhaktipriya96@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/android')
-rw-r--r-- | drivers/android/binder.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 16288e777ec3..562af94bec35 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c | |||
@@ -59,7 +59,6 @@ static struct dentry *binder_debugfs_dir_entry_proc; | |||
59 | static struct binder_node *binder_context_mgr_node; | 59 | static struct binder_node *binder_context_mgr_node; |
60 | static kuid_t binder_context_mgr_uid = INVALID_UID; | 60 | static kuid_t binder_context_mgr_uid = INVALID_UID; |
61 | static int binder_last_id; | 61 | static int binder_last_id; |
62 | static struct workqueue_struct *binder_deferred_workqueue; | ||
63 | 62 | ||
64 | #define BINDER_DEBUG_ENTRY(name) \ | 63 | #define BINDER_DEBUG_ENTRY(name) \ |
65 | static int binder_##name##_open(struct inode *inode, struct file *file) \ | 64 | static int binder_##name##_open(struct inode *inode, struct file *file) \ |
@@ -3227,7 +3226,7 @@ binder_defer_work(struct binder_proc *proc, enum binder_deferred_state defer) | |||
3227 | if (hlist_unhashed(&proc->deferred_work_node)) { | 3226 | if (hlist_unhashed(&proc->deferred_work_node)) { |
3228 | hlist_add_head(&proc->deferred_work_node, | 3227 | hlist_add_head(&proc->deferred_work_node, |
3229 | &binder_deferred_list); | 3228 | &binder_deferred_list); |
3230 | queue_work(binder_deferred_workqueue, &binder_deferred_work); | 3229 | schedule_work(&binder_deferred_work); |
3231 | } | 3230 | } |
3232 | mutex_unlock(&binder_deferred_lock); | 3231 | mutex_unlock(&binder_deferred_lock); |
3233 | } | 3232 | } |
@@ -3679,10 +3678,6 @@ static int __init binder_init(void) | |||
3679 | { | 3678 | { |
3680 | int ret; | 3679 | int ret; |
3681 | 3680 | ||
3682 | binder_deferred_workqueue = create_singlethread_workqueue("binder"); | ||
3683 | if (!binder_deferred_workqueue) | ||
3684 | return -ENOMEM; | ||
3685 | |||
3686 | binder_debugfs_dir_entry_root = debugfs_create_dir("binder", NULL); | 3681 | binder_debugfs_dir_entry_root = debugfs_create_dir("binder", NULL); |
3687 | if (binder_debugfs_dir_entry_root) | 3682 | if (binder_debugfs_dir_entry_root) |
3688 | binder_debugfs_dir_entry_proc = debugfs_create_dir("proc", | 3683 | binder_debugfs_dir_entry_proc = debugfs_create_dir("proc", |