From: "Mike D. Day" <ncmike@us.ibm.com>
To: Greg KH <greg@kroah.com>
Cc: lkml <linux-kernel@vger.kernel.org>, xen-devel@lists.xensource.com
Subject: Re: [RFC] [PATCH] sysfs support for Xen attributes
Date: Wed, 11 Jan 2006 19:23:53 -0500 [thread overview]
Message-ID: <43C5A199.1080708@us.ibm.com> (raw)
In-Reply-To: <20060111230704.GA32558@kroah.com>
Greg KH wrote:
> Why is xen special from the rest of the kernel in regards to adding
> files to sysfs? What does your infrastructure add that is not currently
> already present for everyone to use today?
I think it comes down to simplification for non-driver code, which is
admittedly not the mainstream use model for sysfs.
>
> Why is the xen version any different from any other module or driver
> version in the kernel? (hint, use the interface that is availble for
> this already...)
The module version? Xen is not a module nor a driver, so that interface
doesn't quite serve the purpose. True, one could create a "Xen module"
that talks to Xen the hypervisor, but then the version interface would
provide the version of the xen module, not the version of the xen
hypervisor. /sys/xen/version may not be the best example for this
discussion. What is important is that this attribute is obtained from
Xen using a hypercall. Sysfs works great to prove the xen version and
other similar xen attributes to userspace.
>
> You have access to the current tree as well as we do to be able to
> answer this question :)
Right. Dumb question.
> You don't have to create a driver subsystem to be able to add stuff to
> sysfs, what makes you think that?
Sorry, you are right. But you do need to have s struct dev or use
kobjects. What I want is an interface to create sysfs files using a path
as a parameter, rather than a struct kobject.
> did you look at debugfs?
yes
> configfs?
no. configfs may be a better choice. I would still want a higher-level
kernel interface similar to what is in the patch, as explained below.
But I think sysfs may be more appropriate because attributes show up
automatically without a user-space action being taken.
> What is wrong with the current kobject/sysfs/driver model interface that
> made you want to create this extra code?
Nothing is wrong, but I want a higher-level interface, to be able to
create files and directories using a path, and to allow a code that is
not associated with a device to create sysfs files by specifying a path.
e.g., create(path, mode, ...).
Currently in xeno-linux there are several files under /proc/xen. These
are created by different areas of the xeno-linux kernel. In xeno-linux
today there is a single higher-level routine that each of these
different areas uses to create its own file under /proc/xen. In other
words, I think there should be a unifying element to the interface
because the callers are not organized within a single module.
> Aren't you already going to have a xen virtual bus in sysfs and the
> driver model? Why not just put your needed attributes there, where they
> belong (on the devices themselves)?
the xenbus, which is now in xen 3.0, allows kernels running in xen
domains to get access to virtual devices hosted in a driver
domain/domain0. But the attributes I am creating in /sys/xen are xen
attributes, not device attributes. The difference is important to
consumers of the attributes. I could create a device just to export
hypervisor attributes, but I think the what I've done is simpler.
>>+#define __sysfs_ref__
>
>
> Why?
A simple way to denote functions that get a reference to a reference
counted object. e.g., int __sysfs_ref__ foo(void); gone.
>
>
>>+struct xen_sysfs_object;
>>+
>>+struct xen_sysfs_attr {
>>+ struct bin_attribute attr;
>>+ ssize_t (*show)(void *, char *) ;
>>+ ssize_t (*store)(void *, const char *, size_t) ;
>>+ ssize_t (*read)(void *, char *, loff_t, size_t );
>>+ ssize_t (*write)(void *, char *, loff_t, size_t) ;
>>+};
>
>
> Why a binary attribute? Do you want to have more than one single piece
> of info in here? If so, no.
To facilitate creation of binary files. struct bin_attribute contains a
struct attribute, so it is an alternative to using a union.
Mike (hoping he doesn't end up on linux kernel monkey log)
--
Mike D. Day
STSM and Architect, Open Virtualization
IBM Linux Technology Center
ncmike@us.ibm.com
WARNING: multiple messages have this Message-ID (diff)
From: "Mike D. Day" <ncmike@us.ibm.com>
To: Greg KH <greg@kroah.com>
Cc: xen-devel@lists.xensource.com, lkml <linux-kernel@vger.kernel.org>
Subject: Re: [RFC] [PATCH] sysfs support for Xen attributes
Date: Wed, 11 Jan 2006 19:23:53 -0500 [thread overview]
Message-ID: <43C5A199.1080708@us.ibm.com> (raw)
In-Reply-To: <20060111230704.GA32558@kroah.com>
Greg KH wrote:
> Why is xen special from the rest of the kernel in regards to adding
> files to sysfs? What does your infrastructure add that is not currently
> already present for everyone to use today?
I think it comes down to simplification for non-driver code, which is
admittedly not the mainstream use model for sysfs.
>
> Why is the xen version any different from any other module or driver
> version in the kernel? (hint, use the interface that is availble for
> this already...)
The module version? Xen is not a module nor a driver, so that interface
doesn't quite serve the purpose. True, one could create a "Xen module"
that talks to Xen the hypervisor, but then the version interface would
provide the version of the xen module, not the version of the xen
hypervisor. /sys/xen/version may not be the best example for this
discussion. What is important is that this attribute is obtained from
Xen using a hypercall. Sysfs works great to prove the xen version and
other similar xen attributes to userspace.
>
> You have access to the current tree as well as we do to be able to
> answer this question :)
Right. Dumb question.
> You don't have to create a driver subsystem to be able to add stuff to
> sysfs, what makes you think that?
Sorry, you are right. But you do need to have s struct dev or use
kobjects. What I want is an interface to create sysfs files using a path
as a parameter, rather than a struct kobject.
> did you look at debugfs?
yes
> configfs?
no. configfs may be a better choice. I would still want a higher-level
kernel interface similar to what is in the patch, as explained below.
But I think sysfs may be more appropriate because attributes show up
automatically without a user-space action being taken.
> What is wrong with the current kobject/sysfs/driver model interface that
> made you want to create this extra code?
Nothing is wrong, but I want a higher-level interface, to be able to
create files and directories using a path, and to allow a code that is
not associated with a device to create sysfs files by specifying a path.
e.g., create(path, mode, ...).
Currently in xeno-linux there are several files under /proc/xen. These
are created by different areas of the xeno-linux kernel. In xeno-linux
today there is a single higher-level routine that each of these
different areas uses to create its own file under /proc/xen. In other
words, I think there should be a unifying element to the interface
because the callers are not organized within a single module.
> Aren't you already going to have a xen virtual bus in sysfs and the
> driver model? Why not just put your needed attributes there, where they
> belong (on the devices themselves)?
the xenbus, which is now in xen 3.0, allows kernels running in xen
domains to get access to virtual devices hosted in a driver
domain/domain0. But the attributes I am creating in /sys/xen are xen
attributes, not device attributes. The difference is important to
consumers of the attributes. I could create a device just to export
hypervisor attributes, but I think the what I've done is simpler.
>>+#define __sysfs_ref__
>
>
> Why?
A simple way to denote functions that get a reference to a reference
counted object. e.g., int __sysfs_ref__ foo(void); gone.
>
>
>>+struct xen_sysfs_object;
>>+
>>+struct xen_sysfs_attr {
>>+ struct bin_attribute attr;
>>+ ssize_t (*show)(void *, char *) ;
>>+ ssize_t (*store)(void *, const char *, size_t) ;
>>+ ssize_t (*read)(void *, char *, loff_t, size_t );
>>+ ssize_t (*write)(void *, char *, loff_t, size_t) ;
>>+};
>
>
> Why a binary attribute? Do you want to have more than one single piece
> of info in here? If so, no.
To facilitate creation of binary files. struct bin_attribute contains a
struct attribute, so it is an alternative to using a union.
Mike (hoping he doesn't end up on linux kernel monkey log)
--
Mike D. Day
STSM and Architect, Open Virtualization
IBM Linux Technology Center
ncmike@us.ibm.com
next prev parent reply other threads:[~2006-01-12 0:23 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-11 17:17 [RFC] [PATCH] sysfs support for Xen attributes Mike D. Day
2006-01-11 17:19 ` Arjan van de Ven
2006-01-11 17:56 ` Stephen Hemminger
2006-01-11 18:45 ` Dave Hansen
2006-01-11 18:45 ` Dave Hansen
2006-01-11 23:07 ` Greg KH
2006-01-12 0:23 ` Mike D. Day [this message]
2006-01-12 0:23 ` Mike D. Day
2006-01-12 0:57 ` Greg KH
2006-01-12 1:49 ` Mike D. Day
2006-01-12 1:49 ` Mike D. Day
2006-01-12 2:17 ` [Xen-devel] " Mark Williamson
2006-01-12 7:10 ` Greg KH
2006-01-12 14:44 ` [Xen-devel] " Mike D. Day
2006-01-12 14:44 ` Mike D. Day
2006-01-12 14:53 ` [Xen-devel] " Mark Williamson
2006-01-12 15:42 ` Anthony Liguori
2006-01-12 15:57 ` Anthony Liguori
2006-01-12 15:57 ` Anthony Liguori
2006-01-12 17:34 ` [Xen-devel] " Greg KH
2006-01-12 18:44 ` Anthony Liguori
2006-01-12 17:43 ` Greg KH
2006-01-12 9:10 ` Dave Hansen
2006-01-12 9:10 ` Dave Hansen
2006-01-12 14:52 ` [Xen-devel] " Mike D. Day
2006-01-12 15:28 ` Dave Hansen
2006-01-12 15:28 ` Dave Hansen
2006-01-12 15:50 ` [Xen-devel] " Mike D. Day
2006-01-12 15:50 ` Mike D. Day
2006-01-12 12:54 ` Gerd Hoffmann
2006-01-12 12:54 ` Gerd Hoffmann
2006-01-12 13:21 ` Arjan van de Ven
2006-01-12 14:42 ` Gerd Hoffmann
2006-01-12 17:39 ` Greg KH
2006-01-12 18:53 ` Anthony Liguori
2006-01-12 18:55 ` Arjan van de Ven
2006-01-12 18:59 ` Anthony Liguori
2006-01-12 18:59 ` Anthony Liguori
2006-01-12 19:11 ` Mike D. Day
2006-01-12 19:11 ` Mike D. Day
2006-01-12 19:31 ` Greg KH
2006-01-12 19:08 ` Greg KH
2006-01-12 19:18 ` Mike D. Day
2006-01-12 19:18 ` Mike D. Day
2006-01-12 19:30 ` Greg KH
2006-01-12 17:38 ` Greg KH
2006-01-12 1:32 ` Dave Hansen
2006-01-12 1:32 ` Dave Hansen
2006-01-12 10:04 ` [Xen-devel] " Keir Fraser
2006-01-12 10:04 ` Keir Fraser
2006-01-12 15:14 ` [Xen-devel] " Dave Hansen
2006-01-12 15:14 ` Dave Hansen
2006-01-12 15:06 ` [Xen-devel] " Mark Williamson
2006-01-12 15:06 ` Mark Williamson
2006-01-12 15:26 ` [Xen-devel] " Keir Fraser
2006-01-12 15:37 ` Dave Hansen
2006-01-12 15:37 ` Dave Hansen
2006-01-12 15:49 ` [Xen-devel] " Anthony Liguori
2006-01-12 15:49 ` Anthony Liguori
2006-01-11 23:31 ` Pavel Machek
2006-01-12 19:01 ` Greg KH
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=43C5A199.1080708@us.ibm.com \
--to=ncmike@us.ibm.com \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=xen-devel@lists.xensource.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 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.