<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>I'm playing around with work_queue in my VMware workstation. but I hit a problem that the work is processed by [kworker/3:1] other than my work queue.<br><br>static int __init test_init(void)<br>{<br>&nbsp;&nbsp;&nbsp; pr_info(" (*) test_init start - pid:%d. cpu:%d\n", current-&gt;pid, get_cpu());<br>&nbsp;&nbsp;&nbsp; int ret = 0;<br>&nbsp;&nbsp;&nbsp; test_queue_ptr = create_workqueue("myfoo");<br>&nbsp;&nbsp;&nbsp; // test_queue_ptr = create_singlethread_workqueue("test_workqueue");<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if(!test_queue_ptr){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; goto test_queue_ptr_error;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; INIT_WORK(&amp;test_work, test_cb);<br>&nbsp;&nbsp;&nbsp; // ret = queue_work(test_queue_ptr, &amp;test_work);<br>&nbsp;&nbsp;&nbsp; ret = queue_work_on(get_cpu(), test_queue_ptr, &amp;test_work);<br>&nbsp;&nbsp;&nbsp; // schedule_work(&amp;test_work);<br>&nbsp;&nbsp;&nbsp; pr_info(" (*) test_init - queue_work_on return:%d. \n", ret);<br>&nbsp;&nbsp;&nbsp; return 0;<br>test_queue_ptr_error:<br>&nbsp;&nbsp;&nbsp; destroy_workqueue(test_queue_ptr);<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br><br>static void test_cb(struct work_struct *work)<br>{<br>&nbsp;&nbsp;&nbsp; pr_info(" (*) test_cb - pid:%d. cpu:%d\n", current-&gt;pid, get_cpu());<br>}<br><br>isnmod the module gives me the output :<br><br>Nov 19 23:11:18 test kernel: [ 3031.766137]&nbsp; (*) test_init start - pid:8594. cpu:3<br>Nov 19 23:11:18 test kernel: [ 3031.766371]&nbsp; (*) test_init - queue_work_on return:1. <br>Nov 19 23:11:18 test kernel: [ 3031.766672]&nbsp; (*) test_cb - pid:83. cpu:3&nbsp; &lt;--- this line indicates "test_cb" function is running on process 83 ([kworker/3:1]).<br><br>ps aux<br>....<br>root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 82&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S&lt;&nbsp;&nbsp; 22:20&nbsp;&nbsp; 0:00 [charger_manager]<br>root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp; 22:20&nbsp;&nbsp; 0:00 [kworker/3:1]<br>root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 85&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp; 22:20&nbsp;&nbsp; 0:00 [kworker/0:2]<br>root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 217&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S&lt;&nbsp;&nbsp; 22:20&nbsp;&nbsp; 0:00 [mpt_poll_0]<br><br>Thanks<br>Jay<br><br><br></div></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>