All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adam Belay <ambx1@netscape.net>
To: greg@kroah.com
Cc: Patrick Mochel <mochel@osdl.org>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] 2.5.31 driverfs: patch for your consideration
Date: Sat, 17 Aug 2002 14:10:34 +0000	[thread overview]
Message-ID: <3D5E595A.7090106@netscape.net> (raw)
In-Reply-To: 20020817030604.GB7029@kroah.com

[-- Attachment #1: Type: text/plain, Size: 704 bytes --]



greg@kroah.com wrote:

 >
 >Um, your email client mangled the patch, dropping tabs and wrapped
 >lines.
 >
Thanks for pointing this out.  I'll send it as an attachment this time.
  My current client has been causing me a lot of trouble, is there one
you would suggest I use?

 >
 >Isn't this info already in the "name" file of a driver?
 >

I'm probably just confused but I'm not sure what you mean.  This patch 
does the following, as shown previously:

example:
#cd /driverfs/root/pci0/00:00.0
#cat driver
agpgart

 >
 >Not that I agree with this patch at all, but you might want to go read
 >Documentation/CodingStyle to fix up your brace placement properly.
 >

Ok I'll read it.

 >

Thanks,
Adam


[-- Attachment #2: driver.patch --]
[-- Type: text/plain, Size: 731 bytes --]

diff -ur --new-file a/drivers/base/interface.c b/drivers/base/interface.c
--- a/drivers/base/interface.c  Wed Aug 14 17:09:28 2002
+++ b/drivers/base/interface.c  Fri Aug 16 22:03:18 2002
@@ -88,8 +88,20 @@
 static DEVICE_ATTR(power,"power",S_IWUSR | S_IRUGO,
           device_read_power,device_write_power);
 
+
+static ssize_t device_read_driver(struct device * dev, char * buf, size_t count, loff_t off)
+{
+   if (dev->driver)
+       return off ? 0 : sprintf(buf,"%s\n",dev->driver->name);
+   else
+       return 0;
+}
+
+static DEVICE_ATTR(driver,"driver",S_IRUGO,device_read_driver,NULL);
+
 struct device_attribute * device_default_files[] = {
    &dev_attr_name,
    &dev_attr_power,
+   &dev_attr_driver,
    NULL,
 };

[-- Attachment #3: driver2.patch --]
[-- Type: text/plain, Size: 2899 bytes --]

diff -ur --new-file a/drivers/base/base.h b/drivers/base/base.h
--- a/drivers/base/base.h   Fri Aug 16 12:20:18 2002
+++ b/drivers/base/base.h   Fri Aug 16 22:17:26 2002
@@ -26,3 +26,5 @@
 
 extern int driver_attach(struct device_driver * drv);
 extern void driver_detach(struct device_driver * drv);
+extern int do_driver_detach(struct device * dev, struct device_driver * drv);
+extern int do_driver_attach(struct device * dev, void * data);
diff -ur --new-file a/drivers/base/core.c b/drivers/base/core.c
--- a/drivers/base/core.c   Wed Aug 14 17:09:28 2002
+++ b/drivers/base/core.c   Fri Aug 16 22:16:30 2002
@@ -98,7 +98,7 @@
 
 static void device_detach(struct device * dev)
 {
-   struct device_driver * drv; 
+   struct device_driver * drv;
 
    if (dev->driver) {
        lock_device(dev);
@@ -117,7 +117,7 @@
    }
 }
 
-static int do_driver_attach(struct device * dev, void * data)
+int do_driver_attach(struct device * dev, void * data)
 {
    struct device_driver * drv = (struct device_driver *)data;
    int error = 0;
@@ -134,7 +134,7 @@
    return bus_for_each_dev(drv->bus,drv,do_driver_attach);
 }
 
-static int do_driver_detach(struct device * dev, struct device_driver * drv)
+int do_driver_detach(struct device * dev, struct device_driver * drv)
 {
    lock_device(dev);
    if (dev->driver == drv) {
diff -ur --new-file a/drivers/base/interface.c b/drivers/base/interface.c
--- a/drivers/base/interface.c  Fri Aug 16 22:06:41 2002
+++ b/drivers/base/interface.c  Fri Aug 16 22:15:29 2002
@@ -8,6 +8,7 @@
 #include <linux/device.h>
 #include <linux/err.h>
 #include <linux/stat.h>
+#include "base.h"
 
 static ssize_t device_read_name(struct device * dev, char * buf, size_t count, loff_t off)
 {
@@ -97,7 +98,44 @@
        return 0;
 }
 
-static DEVICE_ATTR(driver,"driver",S_IRUGO,device_read_driver,NULL);
+struct device_driver * find_driver_by_name(struct bus_type * bus, char * name)
+{
+   struct list_head * pos;
+   struct device_driver * drv;
+   list_for_each (pos, &bus->drivers)
+   {
+       drv = list_entry(pos, struct device_driver, bus_list);
+       if (!strncmp(drv->name,name,strlen(name) - 1))
+           return drv;
+
+   }
+   return NULL;
+
+}
+
+static ssize_t device_write_driver(struct device * dev, char * buf, size_t count, loff_t off)
+{
+   struct device_driver * drv = NULL;
+   int error = 0;
+   if (off)
+       return 0;
+   if (!dev->bus)
+       return count;
+   if (!dev->driver)
+   {
+       drv = find_driver_by_name(dev->bus, buf);
+       if (drv)
+           error = do_driver_attach(dev,drv);
+
+   } else if (!strnicmp(buf,"remove",6))
+   {
+       error = do_driver_detach(dev, dev->driver);
+   }
+   return error < 0 ? error : count;
+}
+
+static DEVICE_ATTR(driver,"driver",S_IWUSR | S_IRUGO,
+          device_read_driver,device_write_driver);
 
 struct device_attribute * device_default_files[] = {
    &dev_attr_name,

  reply	other threads:[~2002-08-17 18:03 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-16 22:36 [PATCH] 2.5.31 driverfs: patch for your consideration Adam Belay
2002-08-17  3:06 ` Greg KH
2002-08-17 14:10   ` Adam Belay [this message]
2002-08-17 19:03     ` Greg KH
2002-08-17 22:32       ` Adam Belay
2002-08-18 21:46         ` Greg KH
2002-08-18 21:47         ` Greg KH
2002-08-23 17:45           ` [PATCH] 2.5.31 port PnP BIOS to the driver model Adam Belay
2002-08-27 21:40           ` [PATCH] 2.5.32 port PnP BIOS to the driver model RESEND #1 Adam Belay
2002-08-28  5:14             ` Greg KH
2002-08-29 20:36               ` Adam Belay
2002-08-30  5:28                 ` Greg KH
2002-08-30 14:47                   ` Adam Belay
2002-08-30 14:48                   ` [PATCH] 2.5.32 port PnP BIOS to the driver model - ready for inclusion Adam Belay
2002-08-19 18:10         ` [PATCH] 2.5.31 driverfs: patch for your consideration Patrick Mochel
2002-08-19 15:35           ` Adam Belay
2002-08-17 13:52 ` David D. Hagood
2002-08-17 19:43 ` Alan Cox
2002-08-19 18:19 ` Patrick Mochel
2002-08-19 15:50   ` Adam Belay
2002-08-19 19:59     ` Greg KH
2002-08-19 21:54       ` Adam Belay
2002-08-20  3:32         ` Greg KH
2002-08-20  6:51           ` jw schultz
2002-08-20 18:32             ` 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=3D5E595A.7090106@netscape.net \
    --to=ambx1@netscape.net \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mochel@osdl.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.