|
@@ -48,6 +48,7 @@ static struct dentry *binder_debugfs_dir_entry_proc;
|
|
|
static struct binder_node *binder_context_mgr_node;
|
|
|
static uid_t binder_context_mgr_uid = -1;
|
|
|
static int binder_last_id;
|
|
|
+static struct workqueue_struct *binder_deferred_workqueue;
|
|
|
|
|
|
#define BINDER_DEBUG_ENTRY(name) \
|
|
|
static int binder_##name##_open(struct inode *inode, struct file *file) \
|
|
@@ -3109,7 +3110,7 @@ binder_defer_work(struct binder_proc *proc, enum binder_deferred_state defer)
|
|
|
if (hlist_unhashed(&proc->deferred_work_node)) {
|
|
|
hlist_add_head(&proc->deferred_work_node,
|
|
|
&binder_deferred_list);
|
|
|
- schedule_work(&binder_deferred_work);
|
|
|
+ queue_work(binder_deferred_workqueue, &binder_deferred_work);
|
|
|
}
|
|
|
mutex_unlock(&binder_deferred_lock);
|
|
|
}
|
|
@@ -3552,6 +3553,10 @@ static int __init binder_init(void)
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
|
+ binder_deferred_workqueue = create_singlethread_workqueue("binder");
|
|
|
+ if (!binder_deferred_workqueue)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
binder_debugfs_dir_entry_root = debugfs_create_dir("binder", NULL);
|
|
|
if (binder_debugfs_dir_entry_root)
|
|
|
binder_debugfs_dir_entry_proc = debugfs_create_dir("proc",
|