workqueue is not working?

View: New views
3 Messages — Rating Filter:   Alert me  

workqueue is not working?

by Xin Zhao :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I tried to schedule some work in an softirq handler. The way I did is
as follows:

I use create_workqueue to initialize a workqueue "vrpciod_workqueue",

in the softirq, I do INIT_WORK(work, func, data), and then
queue_work(vrpciod_workqueue, work);

I think func() should be called a bit later. However, I noticed that
func() is never called by the workqueue. I don't know why.

Can soneone give me some suggestions? Many thanks!

Xin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: workqueue is not working?

by Misbah khan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I didnt got very clearly what you actually did. But i guess you did faced some problem to work with work queue ( Bottom half of the handler ) I suggest you with an example code so that you could try with it and hope your doubt would get cleared.

/* work queue register and initialize */
static DECLARE_WORK(queue_name,(void *)func_name,func_arq_ptr);

eg :-

static DECLARE_WORK(my_queue,(void *)my_func,NULL);

/* In the Interrupt handler you need to call the bottom half of the function */

schedule_work(&my_queue);

/* The function defination is like this */
void my_func(void)
{
       printk(" Hello from kernal land \n");
}

I hope this example will make your code to work for you , for any clarification please let me know

thanks



Xin Zhao wrote:
I tried to schedule some work in an softirq handler. The way I did is
as follows:

I use create_workqueue to initialize a workqueue "vrpciod_workqueue",

in the softirq, I do INIT_WORK(work, func, data), and then
queue_work(vrpciod_workqueue, work);

I think func() should be called a bit later. However, I noticed that
func() is never called by the workqueue. I don't know why.

Can soneone give me some suggestions? Many thanks!

Xin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: workqueue is not working?

by Misbah khan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

hi ..
There is a reply to you please find it and revert me back

-misbah

I didnt got very clearly what you actually did. But i guess you did faced some problem to work with work queue ( Bottom half of the handler ) I suggest you with an example code so that you could try with it and hope your doubt would get cleared.

/* work queue register and initialize */
static DECLARE_WORK(queue_name,(void *)func_name,func_arq_ptr);

eg :-

static DECLARE_WORK(my_queue,(void *)my_func,NULL);

/* In the Interrupt handler you need to call the bottom half of the function */

schedule_work(&my_queue);

/* The function defination is like this */
void my_func(void)
{
       printk(" Hello from kernal land \n");
}

I hope this example will make your code to work for you , for any clarification please let me know

thanks



Xin Zhao wrote:
I tried to schedule some work in an softirq handler. The way I did is
as follows:

I use create_workqueue to initialize a workqueue "vrpciod_workqueue",

in the softirq, I do INIT_WORK(work, func, data), and then
queue_work(vrpciod_workqueue, work);

I think func() should be called a bit later. However, I noticed that
func() is never called by the workqueue. I don't know why.

Can soneone give me some suggestions? Many thanks!

Xin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/