Loading net/qrtr/ns.c +16 −10 Original line number Diff line number Diff line Loading @@ -29,8 +29,9 @@ static struct { struct socket *sock; struct sockaddr_qrtr bcast_sq; struct list_head lookups; struct workqueue_struct *workqueue; struct work_struct work; struct kthread_worker kworker; struct kthread_work work; struct task_struct *task; int local_node; } qrtr_ns; Loading Loading @@ -628,7 +629,7 @@ static void ns_log_msg(const struct qrtr_ctrl_pkt *pkt, le32_to_cpu(pkt->server.instance)); } static void qrtr_ns_worker(struct work_struct *work) static void qrtr_ns_worker(struct kthread_work *work) { const struct qrtr_ctrl_pkt *pkt; size_t recv_buf_size = 4096; Loading Loading @@ -724,7 +725,7 @@ static void qrtr_ns_worker(struct work_struct *work) static void qrtr_ns_data_ready(struct sock *sk) { queue_work(qrtr_ns.workqueue, &qrtr_ns.work); kthread_queue_work(&qrtr_ns.kworker, &qrtr_ns.work); } void qrtr_ns_init(void) Loading @@ -734,7 +735,8 @@ void qrtr_ns_init(void) int ret; INIT_LIST_HEAD(&qrtr_ns.lookups); INIT_WORK(&qrtr_ns.work, qrtr_ns_worker); kthread_init_worker(&qrtr_ns.kworker); kthread_init_work(&qrtr_ns.work, qrtr_ns_worker); ns_ilc = ipc_log_context_create(NS_LOG_PAGE_CNT, "qrtr_ns", 0); Loading @@ -749,9 +751,13 @@ void qrtr_ns_init(void) goto err_sock; } qrtr_ns.workqueue = alloc_workqueue("qrtr_ns_handler", WQ_UNBOUND, 1); if (!qrtr_ns.workqueue) qrtr_ns.task = kthread_run(kthread_worker_fn, &qrtr_ns.kworker, "qrtr_ns"); if (IS_ERR(qrtr_ns.task)) { pr_err("failed to spawn worker thread %ld\n", PTR_ERR(qrtr_ns.task)); goto err_sock; } qrtr_ns.sock->sk->sk_data_ready = qrtr_ns_data_ready; Loading @@ -777,7 +783,7 @@ void qrtr_ns_init(void) return; err_wq: destroy_workqueue(qrtr_ns.workqueue); kthread_stop(qrtr_ns.task); err_sock: sock_release(qrtr_ns.sock); } Loading @@ -785,8 +791,8 @@ EXPORT_SYMBOL_GPL(qrtr_ns_init); void qrtr_ns_remove(void) { cancel_work_sync(&qrtr_ns.work); destroy_workqueue(qrtr_ns.workqueue); kthread_flush_worker(&qrtr_ns.kworker); kthread_stop(qrtr_ns.task); sock_release(qrtr_ns.sock); } EXPORT_SYMBOL_GPL(qrtr_ns_remove); Loading Loading
net/qrtr/ns.c +16 −10 Original line number Diff line number Diff line Loading @@ -29,8 +29,9 @@ static struct { struct socket *sock; struct sockaddr_qrtr bcast_sq; struct list_head lookups; struct workqueue_struct *workqueue; struct work_struct work; struct kthread_worker kworker; struct kthread_work work; struct task_struct *task; int local_node; } qrtr_ns; Loading Loading @@ -628,7 +629,7 @@ static void ns_log_msg(const struct qrtr_ctrl_pkt *pkt, le32_to_cpu(pkt->server.instance)); } static void qrtr_ns_worker(struct work_struct *work) static void qrtr_ns_worker(struct kthread_work *work) { const struct qrtr_ctrl_pkt *pkt; size_t recv_buf_size = 4096; Loading Loading @@ -724,7 +725,7 @@ static void qrtr_ns_worker(struct work_struct *work) static void qrtr_ns_data_ready(struct sock *sk) { queue_work(qrtr_ns.workqueue, &qrtr_ns.work); kthread_queue_work(&qrtr_ns.kworker, &qrtr_ns.work); } void qrtr_ns_init(void) Loading @@ -734,7 +735,8 @@ void qrtr_ns_init(void) int ret; INIT_LIST_HEAD(&qrtr_ns.lookups); INIT_WORK(&qrtr_ns.work, qrtr_ns_worker); kthread_init_worker(&qrtr_ns.kworker); kthread_init_work(&qrtr_ns.work, qrtr_ns_worker); ns_ilc = ipc_log_context_create(NS_LOG_PAGE_CNT, "qrtr_ns", 0); Loading @@ -749,9 +751,13 @@ void qrtr_ns_init(void) goto err_sock; } qrtr_ns.workqueue = alloc_workqueue("qrtr_ns_handler", WQ_UNBOUND, 1); if (!qrtr_ns.workqueue) qrtr_ns.task = kthread_run(kthread_worker_fn, &qrtr_ns.kworker, "qrtr_ns"); if (IS_ERR(qrtr_ns.task)) { pr_err("failed to spawn worker thread %ld\n", PTR_ERR(qrtr_ns.task)); goto err_sock; } qrtr_ns.sock->sk->sk_data_ready = qrtr_ns_data_ready; Loading @@ -777,7 +783,7 @@ void qrtr_ns_init(void) return; err_wq: destroy_workqueue(qrtr_ns.workqueue); kthread_stop(qrtr_ns.task); err_sock: sock_release(qrtr_ns.sock); } Loading @@ -785,8 +791,8 @@ EXPORT_SYMBOL_GPL(qrtr_ns_init); void qrtr_ns_remove(void) { cancel_work_sync(&qrtr_ns.work); destroy_workqueue(qrtr_ns.workqueue); kthread_flush_worker(&qrtr_ns.kworker); kthread_stop(qrtr_ns.task); sock_release(qrtr_ns.sock); } EXPORT_SYMBOL_GPL(qrtr_ns_remove); Loading