Le lundi 13 novembre 2006 à 10:04 -0500, Dmitry Torokhov a écrit :
> Hi Stelian,
>
> On 11/11/06, Stelian Pop <stelian@xxxxxxxxxx> wrote:
>
> +
> > + if (input_register_device(ams_info.idev)) {
> > + input_free_device(ams_info.idev);
> > + ams_info.idev = NULL;
> > + return;
> > + }
> > +
> > + ams_info.kthread = kthread_run(ams_mouse_kthread, NULL, "kams");
> > + if (IS_ERR(ams_info.kthread)) {
> > + input_unregister_device(ams_info.idev);
> > + ams_info.idev = NULL;
> > + return;
> > + }
> > +}
>
> Please consider implementing ams_mouse_start() and ams_mouse_stop()
> methods for input_dev and start/stop polling thread there - there is
> no reason to report input events when noone listens to them.
I suppose you talk about input_dev->open() and close() ?
+
+static int ams_mouse_open(struct input_dev *dev)
+{
+ ams_info.kthread = kthread_run(ams_mouse_kthread, NULL, "kams");
+ return IS_ERR(ams_info.kthread) ? -ENODEV : 0;
+}
+