From: Andi Kleen <andi@firstfloor.org>
To: Jarod Wilson <jwilson@redhat.com>
Cc: linux-kernel@vger.kernel.org, Jarod Wilson <jarod@redhat.com>,
Janne Grunau <j@jannau.net>,
Christoph Bartelmus <lirc@bartelmus.de>,
Mario Limonciello <superm1@ubuntu.com>
Subject: Re: [PATCH 01/18] lirc core device driver infrastructure
Date: Tue, 09 Sep 2008 11:46:48 +0200 [thread overview]
Message-ID: <87hc8ptzw7.fsf@basil.nowhere.org> (raw)
In-Reply-To: <1220933164-10160-2-git-send-email-jwilson@redhat.com> (Jarod Wilson's message of "Tue, 9 Sep 2008 00:05:46 -0400")
Jarod Wilson <jwilson@redhat.com> writes:
Just some quick comments, no complete review
> +EXTRA_CFLAGS =-DIRCTL_DEV_MAJOR=61 -DLIRC_SERIAL_TRANSMITTER -I$(src)
Put the Ds into some include instead?
> +
> +static int debug;
> +#define dprintk(fmt, args...) \
> + do { \
> + if (debug) \
> + printk(KERN_DEBUG fmt, ## args); \
> + } while (0)
There's some effort to replace that all with pr_printk
> + dprintk(LOGHEAD "poll thread started\n", ir->p.name, ir->p.minor);
> +
> + do {
> + if (ir->open) {
> + if (ir->jiffies_to_wait) {
> + set_current_state(TASK_INTERRUPTIBLE);
> + schedule_timeout(ir->jiffies_to_wait);
> + } else {
> + interruptible_sleep_on(
> + ir->p.get_queue(ir->p.data));
sleep_on is really discouraged, consider replacing it with wait_event()
> + }
> + if (kthread_should_stop())
> + break;
> + if (!add_to_buf(ir))
> + wake_up_interruptible(&ir->buf->wait_poll);
> + } else {
> + /* if device not opened so we can sleep half a second */
> + set_current_state(TASK_INTERRUPTIBLE);
> + schedule_timeout(HZ/2);
This means you always wake up every half a second? That will not make
the powertop users happy. When there's nothing to do it should just sleep.
The checks in plugin_register seem a bit extreme.
At least make that all WARN_ONs
> +
> + /* end up polling thread */
> + if (ir->task) {
> + wake_up_process(ir->task);
> + kthread_stop(ir->task);
> + }
> +
> + dprintk("lirc_dev: plugin %s unregistered from minor number = %d\n",
> + ir->p.name, ir->p.minor);
> +
> + ir->attached = 0;
> + if (ir->open) {
> + dprintk(LOGHEAD "releasing opened plugin\n",
> + ir->p.name, ir->p.minor);
> + wake_up_interruptible(&ir->buf->wait_poll);
This seems racy with some users who are lockless
> + mutex_lock(&ir->buffer_lock);
> + ir->p.set_use_dec(ir->p.data);
> + module_put(ir->p.owner);
> + mutex_unlock(&ir->buffer_lock);
> + } else
> + cleanup(ir);
> + mutex_unlock(&plugin_lock);
> +
> +/*
> + * Recent kernels should handle this autmatically by increasing/decreasing
> + * use count when a dependant module is loaded/unloaded.
> + */
All kernels are recent now.
> +#ifdef MODULE
> +
> +/*
> + *
> + */
> +int init_module(void)
> +{
> + return lirc_dev_init();
> +}
> +
> +/*
> + *
> + */
> +void cleanup_module(void)
> +{
> + /* unregister_chrdev returns void now */
> + unregister_chrdev(IRCTL_DEV_MAJOR, IRCTL_DEV_NAME);
> + class_destroy(lirc_class);
> + dprintk("lirc_dev: module unloaded\n");
> +}
> +
> +MODULE_DESCRIPTION("LIRC base driver module");
> +MODULE_AUTHOR("Artur Lipowski");
> +MODULE_LICENSE("GPL");
> +MODULE_ALIAS_CHARDEV_MAJOR(IRCTL_DEV_MAJOR);
> +
> +module_param(debug, bool, 0644);
> +MODULE_PARM_DESC(debug, "Enable debugging messages");
> +
> +#else /* not a MODULE */
> +subsys_initcall(lirc_dev_init);
> +
> +#endif /* MODULE */
Always use the #ifdef MODULE path, it does DTRT when compiled in too.
Remove the init_module wrapper, replace with module_init()
... not read further ...
-Andi
--
ak@linux.intel.com
next prev parent reply other threads:[~2008-09-09 9:47 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-09 4:05 [PATCH 0/18] linux infrared remote control drivers Jarod Wilson
2008-09-09 4:05 ` [PATCH 01/18] lirc core device driver infrastructure Jarod Wilson
2008-09-09 4:05 ` [PATCH 02/18] lirc serial port receiver/transmitter device driver Jarod Wilson
2008-09-09 4:05 ` [PATCH 03/18] lirc driver for 1st-gen Media Center Ed. USB IR transceivers Jarod Wilson
2008-09-09 4:05 ` [PATCH 04/18] lirc driver for 2nd-gen and later " Jarod Wilson
2008-09-09 4:05 ` [PATCH 05/18] lirc driver for i2c-based IR receivers Jarod Wilson
2008-09-09 4:05 ` [PATCH 06/18] lirc driver for the ATI USB RF remote receiver Jarod Wilson
2008-09-09 4:05 ` [PATCH 07/18] lirc driver for the CommandIR USB Transceiver Jarod Wilson
2008-09-09 4:05 ` [PATCH 08/18] lirc driver for the Soundgraph IMON IR Receivers Jarod Wilson
2008-09-09 4:05 ` [PATCH 09/18] lirc driver for the Streamzap PC Receiver Jarod Wilson
2008-09-09 4:05 ` [PATCH 10/18] lirc driver for Igor Cesko's USB IR receiver Jarod Wilson
2008-09-09 4:05 ` [PATCH 11/18] lirc driver for the Technotrend " Jarod Wilson
2008-09-09 4:05 ` [PATCH 12/18] lirc driver for the Sasem OnAir and Dign HV5 receivers Jarod Wilson
2008-09-09 4:05 ` [PATCH 13/18] lirc driver for ITE8709 CIR port receiver Jarod Wilson
2008-09-09 4:05 ` [PATCH 14/18] lirc driver for the ITE IT87xx CIR Port receivers Jarod Wilson
2008-09-09 4:06 ` [PATCH 15/18] lirc driver for the SIR IrDA port Jarod Wilson
2008-09-09 4:06 ` [PATCH 16/18] lirc driver for the IR interface on BT829-based hardware Jarod Wilson
2008-09-09 4:06 ` [PATCH 17/18] lirc driver for homebrew parallel port receivers Jarod Wilson
2008-09-09 4:06 ` [PATCH 18/18] lirc driver for the zilog/haupauge IR transceiver Jarod Wilson
2008-09-09 4:06 ` Jarod Wilson
2008-09-11 15:22 ` [PATCH 09/18] lirc driver for the Streamzap PC Receiver Jonathan Corbet
2008-09-10 21:02 ` [PATCH 08/18] lirc driver for the Soundgraph IMON IR Receivers Jonathan Corbet
2008-09-10 21:23 ` Janne Grunau
2008-09-11 3:22 ` Jarod Wilson
2008-09-22 21:47 ` Jarod Wilson
2008-09-24 20:21 ` Jarod Wilson
2008-09-10 17:09 ` [PATCH 07/18] lirc driver for the CommandIR USB Transceiver Jonathan Corbet
2008-09-11 18:24 ` Christoph Bartelmus
[not found] ` <1221159005.13683.34.camel@minimatt>
2008-09-11 19:03 ` Jarod Wilson
2008-09-11 19:14 ` Janne Grunau
2008-09-25 15:21 ` Jarod Wilson
2008-09-10 9:58 ` [PATCH 06/18] lirc driver for the ATI USB RF remote receiver Ville Syrjälä
2008-09-10 13:05 ` Jarod Wilson
2008-09-10 13:14 ` Christoph Hellwig
2008-09-10 13:37 ` Jon Smirl
2008-09-10 14:30 ` Dmitry Torokhov
2008-09-10 13:44 ` Janne Grunau
2008-09-10 14:13 ` Jarod Wilson
2008-09-10 14:19 ` Christoph Hellwig
2008-09-10 14:08 ` Ville Syrjälä
2008-09-10 14:37 ` Dmitry Torokhov
2008-09-09 4:13 ` [PATCH 05/18] lirc driver for i2c-based IR receivers Jarod Wilson
2008-09-10 15:42 ` Jonathan Corbet
2008-09-09 23:30 ` [PATCH 04/18] lirc driver for 2nd-gen and later Media Center Ed. USB IR transceivers Jonathan Corbet
2008-09-10 0:36 ` Janne Grunau
2008-09-11 9:21 ` Adrian Bunk
2008-09-09 19:21 ` [PATCH 03/18] lirc driver for 1st-gen " Jonathan Corbet
2008-09-09 23:59 ` Janne Grunau
2008-09-10 1:39 ` Jarod Wilson
2008-09-10 0:04 ` Janne Grunau
2008-09-09 16:14 ` [PATCH 02/18] lirc serial port receiver/transmitter device driver Jonathan Corbet
2008-09-09 19:51 ` Stefan Lippers-Hollmann
2008-09-09 19:56 ` Jarod Wilson
2008-09-10 17:40 ` Jarod Wilson
2008-09-09 7:40 ` [PATCH 01/18] lirc core device driver infrastructure Sebastian Siewior
2008-09-09 9:53 ` Janne Grunau
2008-09-09 12:33 ` Sebastian Siewior
2008-09-09 13:10 ` Janne Grunau
2008-09-11 16:41 ` Christoph Bartelmus
2008-09-09 11:13 ` Alan Cox
2008-09-09 13:27 ` Stefan Richter
2008-09-09 17:03 ` Jarod Wilson
2008-09-11 18:30 ` Christoph Bartelmus
2008-09-11 19:09 ` Jarod Wilson
2008-09-13 7:21 ` Christoph Bartelmus
2008-09-09 9:46 ` Andi Kleen [this message]
2008-09-09 11:35 ` Janne Grunau
2008-09-09 13:03 ` Andi Kleen
2008-09-09 13:20 ` Janne Grunau
2008-09-12 16:46 ` Greg KH
2008-09-09 13:01 ` Christoph Hellwig
2008-09-10 12:24 ` Janne Grunau
2008-09-10 12:29 ` Christoph Hellwig
2008-09-10 12:45 ` Janne Grunau
2008-09-11 18:03 ` Christoph Bartelmus
2008-09-11 19:18 ` Janne Grunau
2008-09-12 0:16 ` Janne Grunau
2008-09-12 8:33 ` Christoph Hellwig
2008-09-12 14:51 ` Jarod Wilson
2008-09-09 15:33 ` Jonathan Corbet
2008-09-12 0:12 ` Janne Grunau
2008-09-10 13:08 ` Dmitry Torokhov
2008-09-11 8:47 ` Gerd Hoffmann
2008-09-11 21:28 ` Maxim Levitsky
2008-09-13 7:20 ` Christoph Bartelmus
2008-09-12 4:44 ` Dmitry Torokhov
2008-09-09 4:36 ` [PATCH 0/18] linux infrared remote control drivers Chris Wedgwood
2008-09-09 7:06 ` Alexey Dobriyan
2008-09-09 8:32 ` Janne Grunau
2008-09-09 12:46 ` Christoph Hellwig
2008-09-09 15:23 ` Jarod Wilson
2008-09-09 18:27 ` Lennart Sorensen
2008-09-09 18:34 ` Jarod Wilson
2008-09-09 15:34 ` Jon Smirl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87hc8ptzw7.fsf@basil.nowhere.org \
--to=andi@firstfloor.org \
--cc=j@jannau.net \
--cc=jarod@redhat.com \
--cc=jwilson@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lirc@bartelmus.de \
--cc=superm1@ubuntu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox