mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 18:19:02 +00:00
c931b21161
SVN-Revision: 13619
69 lines
2.1 KiB
Diff
Executable File
69 lines
2.1 KiB
Diff
Executable File
From 2dc4f2819aec1cdd3012cb28396a625d2efb00fd Mon Sep 17 00:00:00 2001
|
|
From: Cesar Eduardo Barros <cesarb@cesarb.net>
|
|
Date: Mon, 4 Aug 2008 08:34:50 +0100
|
|
Subject: [PATCH] device model: Allow the creation of symlinks on /sys/bus/*/devices
|
|
|
|
Allows the direct creation of symlinks on /sys/bus/*/devices. This is needed
|
|
for a compat symlink from gta01-pm-gps.0 to neo1973-pm-gps.0 on the Openmoko
|
|
Neo1973 GTA01.
|
|
|
|
Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
|
|
---
|
|
drivers/base/bus.c | 23 +++++++++++++++++++++++
|
|
include/linux/device.h | 5 +++++
|
|
2 files changed, 28 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
|
|
index ef522ae..96d495d 100644
|
|
--- a/drivers/base/bus.c
|
|
+++ b/drivers/base/bus.c
|
|
@@ -141,6 +141,29 @@ void bus_remove_file(struct bus_type *bus, struct bus_attribute *attr)
|
|
}
|
|
EXPORT_SYMBOL_GPL(bus_remove_file);
|
|
|
|
+int bus_create_device_link(struct bus_type *bus, struct kobject *target,
|
|
+ const char *name)
|
|
+{
|
|
+ int error;
|
|
+ if (bus_get(bus)) {
|
|
+ error = sysfs_create_link(&bus->p->devices_kset->kobj, target,
|
|
+ name);
|
|
+ bus_put(bus);
|
|
+ } else
|
|
+ error = -EINVAL;
|
|
+ return error;
|
|
+}
|
|
+EXPORT_SYMBOL_GPL(bus_create_device_link);
|
|
+
|
|
+void bus_remove_device_link(struct bus_type *bus, const char *name)
|
|
+{
|
|
+ if (bus_get(bus)) {
|
|
+ sysfs_remove_link(&bus->p->devices_kset->kobj, name);
|
|
+ bus_put(bus);
|
|
+ }
|
|
+}
|
|
+EXPORT_SYMBOL_GPL(bus_remove_device_link);
|
|
+
|
|
static struct kobj_type bus_ktype = {
|
|
.sysfs_ops = &bus_sysfs_ops,
|
|
};
|
|
diff --git a/include/linux/device.h b/include/linux/device.h
|
|
index 6a2d04c..d29b005 100644
|
|
--- a/include/linux/device.h
|
|
+++ b/include/linux/device.h
|
|
@@ -51,6 +51,11 @@ extern int __must_check bus_create_file(struct bus_type *,
|
|
struct bus_attribute *);
|
|
extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
|
|
|
|
+extern int __must_check bus_create_device_link(struct bus_type *bus,
|
|
+ struct kobject *target,
|
|
+ const char *name);
|
|
+extern void bus_remove_device_link(struct bus_type *bus, const char *name);
|
|
+
|
|
struct bus_type {
|
|
const char *name;
|
|
struct bus_attribute *bus_attrs;
|
|
--
|
|
1.5.6.3
|
|
|