Re: [Question: Drivers/base/core.c] Why dev->init_name = NULL in device_add function ?

From: Aniroop Mathur
Date: Mon Aug 04 2014 - 13:01:23 EST


On Mon, Aug 4, 2014 at 10:05 AM, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> On Mon, Aug 04, 2014 at 12:24:06AM +0530, Aniroop Mathur wrote:
>> On Sat, Aug 2, 2014 at 8:09 AM, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>> > On Sat, Aug 02, 2014 at 05:14:44AM +0530, Aniroop Mathur wrote:
>> >> >> So, overall output will be
>> >> >> /dev/input/event<x> --> /dev/input/event_accelerometer
>> >> >> sys/class/input/input<x> --> sys/class/input/accelerometer
>> >> >>
>> >> >> In short, input and event node names are set just by
>> >> >> adding one line, which i found quite efficient.
>> >> >> There is other way also to set name of event node but
>> >> >> it involves using extra variable and little more code,
>> >> >> So I am looking for best solution possible. :)
>> >> >
>> >> > Only use init_name for static struct devices, for a dynamic one, jsut
>> >> > set the name like everyone else does, how is that "more" code than
>> >> > anything else?
>> >> >
>> >>
>> >> Can you please elaborate what do you mean by static struct devices ?
>> >
>> > Exactly what you wrote there, 'static' is a C thing, right?
>> >
>> >> Can I consider embedded accelerometer, proximity, gyro sensor,
>> >> touch panel in android mobile devices as static devices ?
>> >
>> > Nope, because in my Android phone, I can yank out those and add new ones
>> > on the fly while the phone is running. The kernel is fully dynamic that
>> > way.
>> >
>> >> Input subsystem is setting default name of input and event node.
>> >
>> > As it should.
>> >
>> >> This is the normal method everyone uses.
>> >
>> > And so should you :)
>> >
>> >> I do not want to use default name like event0, event4, input2, etc
>> >
>> > Yes, you really do.
>> >
>> >> My aim is to set name of input and event node through driver as desired.
>> >
>> > Nope, that's userspace's job, just use udev to rename the device node,
>> > or even better yet, create a symlink like /dev/input/by-id/ has if you
>> > really need more than that.
>> >
>> > Don't mess with kernel device names, we can't do that without breaking
>> > tons of things, there's a reason that we standardized on something,
>> > please use it.
>> >
>>
>> Okay, will follow the same. :)
>>
>> One last thing,
>> Why init_name will go away some day ?
>
> Because you should never have a static struct device in the kernel.
> It's a reference counted object that needs to always be dynamically
> allocated in order to properly work. Unfortunatly, there are some users
> who have it allocated statically (on the stack) instead of dynamically
> (on the heap). I'll get rid of them someday, it's _way_ down my list of
> things to do...
>
> thanks,
>
> greg k-h

Thank you so much for your support and answering my queries. :)
Now, the thread has also been marked as solved.

Thanks,
Aniroop
--
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/