Re: [PATCH 8/15] New set of input patches: atkbd - use bitfields

From: Vojtech Pavlik
Date: Thu Apr 22 2004 - 04:59:19 EST


On Wed, Apr 21, 2004 at 12:57:51AM -0500, Dmitry Torokhov wrote:
>
> ===================================================================
>
>
> ChangeSet@xxxxxx, 2004-04-20 22:29:12-05:00, dtor_core@xxxxxxxxxxxxx
> Input: remove unneeded fields in atkbd structure, convert to bitfields

I think this is incorrect. We cannot set the bits in bitfields
atomically, which we need in some cases. We probably need to add
volatiles to some of them, too.


> diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
> --- a/drivers/input/keyboard/atkbd.c Tue Apr 20 23:08:14 2004
> +++ b/drivers/input/keyboard/atkbd.c Tue Apr 20 23:08:14 2004
> @@ -26,7 +26,6 @@
> #include <linux/input.h>
> #include <linux/serio.h>
> #include <linux/workqueue.h>
> -#include <linux/timer.h>
>
> MODULE_AUTHOR("Vojtech Pavlik <vojtech@xxxxxxx>");
> MODULE_DESCRIPTION("AT and PS/2 keyboard driver");
> @@ -173,22 +172,23 @@
> unsigned char keycode[512];
> struct input_dev dev;
> struct serio *serio;
> - struct timer_list timer;
> +
> char name[64];
> char phys[32];
> + unsigned short id;
> + unsigned char set;
> + unsigned int translated:1;
> + unsigned int extra:1;
> + unsigned int write:1;
> +
> unsigned char cmdbuf[4];
> unsigned char cmdcnt;
> - unsigned char set;
> - unsigned char extra;
> - unsigned char release;
> - int lastkey;
> volatile signed char ack;
> unsigned char emul;
> - unsigned short id;
> - unsigned char write;
> - unsigned char translated;
> - unsigned char resend;
> - unsigned char bat_xl;
> + unsigned int resend:1;
> + unsigned int release:1;
> + unsigned int bat_xl:1;
> +
> unsigned int last;
> unsigned long time;
> };
>

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