Hi All,
>From my virtual tty device, I am pushing data to the TTY layer as
follows
static int vs_rx_data(u8 *buf, int size, struct dev_info *dev)
{
int ret_val = 0;
LOG_INFO("In vs_rx_data \n");
if(dev->vs_dev.tty == NULL)
{
LOG_ERR("tty is null!!\n");
return 0;
}
ret_val = tty_insert_flip_string(dev->vs_dev.tty, buf, size);
if(size != ret_val)
{
LOG_ERR("vs_rx_data ==> tty_insert_flip_string returned[%d],
requested [%d]\n", ret_val, size);
}
tty_flip_buffer_push(dev->vs_dev.tty);
return ret_val;
}
This virtual TTY device is set to “low_latency” and the TTY line
discipline is PPP. So every time when I do, tty_flip_buffer_push, the
TTY layer will schedule a work item and call flush_to_ldisc(), which
calls ldisc function ppp_asynctty_receive().
1) This path is working as far as I do some low amount of traffic( Say
ping).
2) But when I do extensive traffic, after sometime, the ldisc flushing
work item in TTY layer is not getting called anymore. What could be
the reason?
3) I found that the tty_flip_buffer_push() is scheduling the work item
always. But the worker function is not called (ie flush_to_ldisc()
4) So this means the worker is dying/got corrupted. But at the same
time the kernel is fully functioning(like other tasklet/worker/
interrupts etc.)
5) How do I debug this situation further?. How to check whether the
worker thread is still alive and in good condition?
Any help is really appreciated.
Thanks,
Shibu
--
unsubscribe: [email protected]
website: http://groups.google.com/group/android-kernel