All of lore.kernel.org
 help / color / mirror / Atom feed
From: "andriy.shevchenko" <andriy.shevchenko@linux.intel.com>
To: "changlianzhi@uniontech.com" <changlianzhi@uniontech.com>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
	"dmitry.torokhov" <dmitry.torokhov@gmail.com>,
	gregkh <gregkh@linuxfoundation.org>,
	jirislaby <jirislaby@kernel.org>, 282827961 <282827961@qq.com>
Subject: Re: [PATCH v6] tty: Fix the keyboard led light display problem
Date: Mon, 25 Oct 2021 15:57:06 +0300	[thread overview]
Message-ID: <YXaposOYGalsRtZt@smile.fi.intel.com> (raw)
In-Reply-To: <202110251224440412487@uniontech.com>

On Mon, Oct 25, 2021 at 12:24:45PM +0800, changlianzhi@uniontech.com wrote:
> On Mon, Oct 25, 2021 at 01:29:18AM +0800, changlianzhi@uniontech.com wrote:
> > > >>On Thu, Oct 21, 2021 at 10:05:11AM +0800, lianzhi chang wrote:

...

> > > >> +	unsigned long leds;
> > > >> +
> > > >> +	leds = (unsigned long)ledstate;
> > >
> > > >Can be one line.
> > >
> > > >But most important question you are ignoring to answer / address is why do you
> > > >use casting?
> 
> > > >>But most important question you are ignoring to answer / address is why do you
> > > >>use casting?
> > > Casting is used here because:
> > > The second parameter of test_bit is "volatile unsigned long *addr" (see constant_test_bit() in /arch/x86/include/asm/bitops.h), but ledstate is an "unsigned int" type. If casting is not used,
> > > compile Will report an error.
> 
> > Wait, you are casting pointer to an integer?!
> > This is completely wrong in this case!
> 
> Hello, I did not do that. For the complete code, please check the
> "patch v6" email I sent earlier. My code is like this:

> +static void kbd_update_ledstate(struct input_dev *dev)
> +{
> +	unsigned long leds;
> +
> +	leds = (unsigned long)ledstate;
> +
> +	if (!!test_bit(LED_NUML, dev->led) != !!test_bit(VC_NUMLOCK, &leds))
> +	ledstate ^= BIT(VC_NUMLOCK);
> +	if (!!test_bit(LED_CAPSL, dev->led) != !!test_bit(VC_CAPSLOCK, &leds))
> +	ledstate ^= BIT(VC_CAPSLOCK);
> +	if (!!test_bit(LED_SCROLLL, dev->led) != !!test_bit(VC_SCROLLOCK, &leds))
> +	ledstate ^= BIT(VC_SCROLLOCK);
> +}

> I mean, the second parameter of test_bit is "volatile unsigned long *addr",
> which is a pointer. And ledstate is an unsigned int type, so I defined an
> unsigned long type leds, assign the ledstate to the leds after forced
> conversion, and then when calling the test_bit function, get the address
> of the leds as a parameter.

This all is fine, but why casting is needed? I didn't still get.

-- 
With Best Regards,
Andy Shevchenko



  parent reply	other threads:[~2021-10-25 12:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20211021020511.18016-1-changlianzhi@uniontech.com>
2021-10-22 15:13 ` [PATCH v6] tty: Fix the keyboard led light display problem Andy Shevchenko
     [not found]   ` <202110250129181502896@uniontech.com>
2021-10-25 12:03     ` andriy.shevchenko
     [not found]       ` <202110251224440412487@uniontech.com>
2021-10-25 12:57         ` andriy.shevchenko [this message]
2021-10-25  5:12 ` Dmitry Torokhov
2021-10-21  3:02 lianzhi chang

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=YXaposOYGalsRtZt@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=282827961@qq.com \
    --cc=changlianzhi@uniontech.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jirislaby@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.