All of lore.kernel.org
 help / color / mirror / Atom feed
* Problems adding sysfs support to dvb subsystem
@ 2004-04-12 20:34 Michael Hunold
  2004-04-12 21:21 ` Stephen Hemminger
  2004-04-12 21:42 ` Greg KH
  0 siblings, 2 replies; 3+ messages in thread
From: Michael Hunold @ 2004-04-12 20:34 UTC (permalink / raw)
  To: linux-kernel

Hello all,

I'm currently trying to add proper sysfs support to the dvb subsystem, 
but I'm stuck because I don't know if I'm on the right way. 8-(

 From the docs and existing drivers I read so far I concluded that 
adding a new class via class_register(&dvb_class) is the way to go.

With this I get:
/sys/class/dvb/

Now there can be several dvb adapters present in the system, each of 
this adapter can have several "subsystems" (video decoder, audio 
decoder, frontend ("tuner"), ...)

New adapters register themselves via dvb_register_adapter() and if this 
was succesfull, they register their subsystems via dvb_register_device().

What I'd like to have is something like this, so I can add attributes to 
the frontend for example:
/sys/class/dvb/adapter0/frontend0/

I wasn't able to find a driver that provides this simple "hierarchical" 
order, so I did some experiments with little luck.

Creating this hierarchical order manually (like for "devfs") didn't 
work, I get
 > find: /sys/class/dvb/adapter0/frontend0: No such file or directory
errors upon access:

 > sprintf((void*)&dvbdev->class_device.class_id, "adapter%d/%s%d", 
adap->num, dnames[type], id);
 > class_device_register(&dvbdev->class_device);

I then tried to find a way to first use class_device_register() with 
adapter0  (which works of course), and then with class_device_register() 
again with frontend0, but obviously I cannot connect these two 
instances, because adapter doesn't have a "struct device" where I can 
point the class_device.dev entry from frontend0 to... 8-(

I'd really appreciate if somebody could give me some design hints or 
point me to some documentation that would help me out.

Thanks!
Michael.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Problems adding sysfs support to dvb subsystem
  2004-04-12 20:34 Problems adding sysfs support to dvb subsystem Michael Hunold
@ 2004-04-12 21:21 ` Stephen Hemminger
  2004-04-12 21:42 ` Greg KH
  1 sibling, 0 replies; 3+ messages in thread
From: Stephen Hemminger @ 2004-04-12 21:21 UTC (permalink / raw)
  To: Michael Hunold; +Cc: linux-kernel

On Mon, 12 Apr 2004 22:34:35 +0200
Michael Hunold <hunold@convergence.de> wrote:

> Hello all,
> 
> I'm currently trying to add proper sysfs support to the dvb subsystem, 
> but I'm stuck because I don't know if I'm on the right way. 8-(
> 
>  From the docs and existing drivers I read so far I concluded that 
> adding a new class via class_register(&dvb_class) is the way to go.
> 
> With this I get:
> /sys/class/dvb/
> 
> Now there can be several dvb adapters present in the system, each of 
> this adapter can have several "subsystems" (video decoder, audio 
> decoder, frontend ("tuner"), ...)

The sysfs directory layout is a logical representation of the underlying
data structures in the kernel.  Each directory (with exception of attribute
groups) has a 1:1 relation ship with a kobject.


> New adapters register themselves via dvb_register_adapter() and if this 
> was succesfull, they register their subsystems via dvb_register_device().
> 
> What I'd like to have is something like this, so I can add attributes to 
> the frontend for example:
> /sys/class/dvb/adapter0/frontend0/

Is there a dvb_adapter structure and a separate dvb_frontend
structure?  Are you prepared to ref count and dynamically allocate both
of them?

> 
> I wasn't able to find a driver that provides this simple "hierarchical" 
> order, so I did some experiments with little luck.
> 
> Creating this hierarchical order manually (like for "devfs") didn't 
> work, I get
>  > find: /sys/class/dvb/adapter0/frontend0: No such file or directory
> errors upon access:
> 
>  > sprintf((void*)&dvbdev->class_device.class_id, "adapter%d/%s%d", 
> adap->num, dnames[type], id);
>  > class_device_register(&dvbdev->class_device);
> 
> I then tried to find a way to first use class_device_register() with 
> adapter0  (which works of course), and then with class_device_register() 
> again with frontend0, but obviously I cannot connect these two 
> instances, because adapter doesn't have a "struct device" where I can 
> point the class_device.dev entry from frontend0 to... 8-(
> 
> I'd really appreciate if somebody could give me some design hints or 
> point me to some documentation that would help me out.
> 
> Thanks!
> Michael.
> 

You could use attribute groups if all you want to do is provide some
logical breakout of attributes inside one kobject.  That is what I did
to put the wireless and netstat elements in different directories for the
network devices.

Stephen Hemminger 		mailto:shemminger@osdl.org
Open Source Development Lab	http://developer.osdl.org/shemminger

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Problems adding sysfs support to dvb subsystem
  2004-04-12 20:34 Problems adding sysfs support to dvb subsystem Michael Hunold
  2004-04-12 21:21 ` Stephen Hemminger
@ 2004-04-12 21:42 ` Greg KH
  1 sibling, 0 replies; 3+ messages in thread
From: Greg KH @ 2004-04-12 21:42 UTC (permalink / raw)
  To: Michael Hunold; +Cc: linux-kernel

On Mon, Apr 12, 2004 at 10:34:35PM +0200, Michael Hunold wrote:
> 
> What I'd like to have is something like this, so I can add attributes to 
> the frontend for example:
> /sys/class/dvb/adapter0/frontend0/
> 
> I wasn't able to find a driver that provides this simple "hierarchical" 
> order, so I did some experiments with little luck.
> 
> Creating this hierarchical order manually (like for "devfs") didn't 
> work, I get
> > find: /sys/class/dvb/adapter0/frontend0: No such file or directory
> errors upon access:
> 
> > sprintf((void*)&dvbdev->class_device.class_id, "adapter%d/%s%d", 
> adap->num, dnames[type], id);
> > class_device_register(&dvbdev->class_device);

No, you can't create subdirectories directly by just adding a '/' to the
name of the class device, sorry.  You will have to create a kobject for
the directory, and create the attributes in that kobject, like
networking did.

Yeah, it's a bit of a pain, but creating subdirectories in an easy
manner is on the TODO list for the driver core for 2.7.

If you want to get up and running quickly, which would not require you
to fix up any lifetime rules for your dvb drivers, you could implement
the class_simple interface, like a lot of other driver subsystems
currently are doing, and then in 2.7 convert over to a proper driver
model conversion.  I say this as I am only guessing as to what your
lifetime rules are for your dvb devices and drivers...

Hope this helps,

greg k-h

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-04-12 21:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-12 20:34 Problems adding sysfs support to dvb subsystem Michael Hunold
2004-04-12 21:21 ` Stephen Hemminger
2004-04-12 21:42 ` Greg KH

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.