[BK] Changing driver core/sysfs/kobject symbol exports to GPL only

From: Patrick Mochel
Date: Fri Sep 24 2004 - 22:44:36 EST



What's life without a little controversey once in a while?

The attached patch and referenced BK tree changes all the symbol exports
in the driver core, sysfs, and the kobject core to EXPORT_SYMBOL_GPL [1].

While I derive a certain amount of pleasure from being cantankerous, the
justification is more pragmatic. The users of these functions are all, in
most cases, other subsystems, which provide a layer of abstraction for the
downstream users (drivers, etc). The exportation of these wrappers is of
course under the control of that subsystem.

Many of those subsystems cannot be built modularly [2]. I have no idea,
and it is impossible to tell, if and how many out-of-tree subsystems (a)
there are and (b) use any of these functions.

What's more is that if anything is to change in these functions, either in
form or in semantics, it will have a direct effect on the users. and in
the absence of auditing could cause obscure bugs. Throughout the course of
development, we've tried to make sure that nothing broke when core changes
were made. Of course mistakes have been made, but not nearly so many if
any of the subsystems we were effecting had been out of the tree.

In short, being able to audit all of the users of these functions is
necessary to their continued evolution (whatever that may entail). It
would make the most sense if all users were part of the kernel, and it
makes little sense to suppor their use by any unknown or binary modules.

So, my question is - does this make sense to others? Are there are any
technical reasons for not doing this? If not, then please apply/pull.

Thanks,


Pat


[1] - Well, it at least changes the files that I originally created. Some
of those include functions that Greg actually wrote, but I figure he'll
accept/reject them with the rest..

[2] - It would be good to remove the symbols that are not used by any
known modules, but that's fodder for another set of patches.


Please pull from

bk://kernel.bkbits.net:/home/mochel/linux-2.6-core

This will update the following files:

drivers/base/bus.c | 28 ++++++++++++++--------------
drivers/base/class.c | 34 +++++++++++++++++-----------------
drivers/base/core.c | 22 +++++++++++-----------
drivers/base/driver.c | 14 +++++++-------
drivers/base/firmware.c | 4 ++--
drivers/base/platform.c | 16 ++++++++--------
drivers/base/power/main.c | 2 +-
drivers/base/power/resume.c | 4 ++--
drivers/base/power/suspend.c | 4 ++--
drivers/base/sys.c | 16 ++++++++--------
fs/sysfs/bin.c | 4 ++--
fs/sysfs/dir.c | 6 +++---
fs/sysfs/file.c | 6 +++---
fs/sysfs/group.c | 4 ++--
fs/sysfs/symlink.c | 4 ++--
15 files changed, 84 insertions(+), 84 deletions(-)

through these ChangeSets:

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.15)
[driver core] Change symbol exports to GPL only in power/suspend.c.

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.14)
[driver core] Change symbol exports to GPL only in power/resume.c

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.13)
[driver core] Change symbol exports to GPL only in power/main.c

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.12)
[sysfs] Change symbol exports to GPL only in symlink.c.

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.11)
[sysfs] Change symbol exports to GPL only in group.c.

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.10)
[sysfs] Change symbol exports to GPL only in file.c.

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.9)
[sysfs] Change symbol exports to GPL only in dir.c

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.8)
[sysfs] Change symbol exports to GPL only in bin.c

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.7)
[driver model] Change symbol exports to GPL only in sys.c

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.6)
[driver model] Change symbol exports to GPL only in platform.c.

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.5)
[driver model] Change symbol exports to GPL only in firmware.c

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.4)
[driver model] Change symbol exports to GPL only in driver.c

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.3)
[driver model] Change symbol exports to GPL only in core.c

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.2)
[driver model] Change sybmols exports to GPL only in class.c

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

<mochel@xxxxxxxxxxxxxxxxxx> (04/09/24 1.1946.5.1)
[driver model] Change symbol exports to GPL only in drivers/base/bus.c.

Signed-of-by Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>
diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/bus.c linux-2.6-core/drivers/base/bus.c
--- linux-2.6/drivers/base/bus.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/bus.c 2004-09-24 11:53:37.000000000 -0700
@@ -721,20 +721,20 @@
}


-EXPORT_SYMBOL(bus_for_each_dev);
-EXPORT_SYMBOL(bus_for_each_drv);
+EXPORT_SYMBOL_GPL(bus_for_each_dev);
+EXPORT_SYMBOL_GPL(bus_for_each_drv);

-EXPORT_SYMBOL(device_bind_driver);
-EXPORT_SYMBOL(device_release_driver);
+EXPORT_SYMBOL_GPL(device_bind_driver);
+EXPORT_SYMBOL_GPL(device_release_driver);

-EXPORT_SYMBOL(bus_add_device);
-EXPORT_SYMBOL(bus_remove_device);
-EXPORT_SYMBOL(bus_register);
-EXPORT_SYMBOL(bus_unregister);
-EXPORT_SYMBOL(bus_rescan_devices);
-EXPORT_SYMBOL(get_bus);
-EXPORT_SYMBOL(put_bus);
-EXPORT_SYMBOL(find_bus);
+EXPORT_SYMBOL_GPL(bus_add_device);
+EXPORT_SYMBOL_GPL(bus_remove_device);
+EXPORT_SYMBOL_GPL(bus_register);
+EXPORT_SYMBOL_GPL(bus_unregister);
+EXPORT_SYMBOL_GPL(bus_rescan_devices);
+EXPORT_SYMBOL_GPL(get_bus);
+EXPORT_SYMBOL_GPL(put_bus);
+EXPORT_SYMBOL_GPL(find_bus);

-EXPORT_SYMBOL(bus_create_file);
-EXPORT_SYMBOL(bus_remove_file);
+EXPORT_SYMBOL_GPL(bus_create_file);
+EXPORT_SYMBOL_GPL(bus_remove_file);
diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/class.c linux-2.6-core/drivers/base/class.c
--- linux-2.6/drivers/base/class.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/class.c 2004-09-24 11:53:37.000000000 -0700
@@ -528,22 +528,22 @@
return 0;
}

-EXPORT_SYMBOL(class_create_file);
-EXPORT_SYMBOL(class_remove_file);
-EXPORT_SYMBOL(class_register);
-EXPORT_SYMBOL(class_unregister);
-EXPORT_SYMBOL(class_get);
-EXPORT_SYMBOL(class_put);
+EXPORT_SYMBOL_GPL(class_create_file);
+EXPORT_SYMBOL_GPL(class_remove_file);
+EXPORT_SYMBOL_GPL(class_register);
+EXPORT_SYMBOL_GPL(class_unregister);
+EXPORT_SYMBOL_GPL(class_get);
+EXPORT_SYMBOL_GPL(class_put);

-EXPORT_SYMBOL(class_device_register);
-EXPORT_SYMBOL(class_device_unregister);
-EXPORT_SYMBOL(class_device_initialize);
-EXPORT_SYMBOL(class_device_add);
-EXPORT_SYMBOL(class_device_del);
-EXPORT_SYMBOL(class_device_get);
-EXPORT_SYMBOL(class_device_put);
-EXPORT_SYMBOL(class_device_create_file);
-EXPORT_SYMBOL(class_device_remove_file);
+EXPORT_SYMBOL_GPL(class_device_register);
+EXPORT_SYMBOL_GPL(class_device_unregister);
+EXPORT_SYMBOL_GPL(class_device_initialize);
+EXPORT_SYMBOL_GPL(class_device_add);
+EXPORT_SYMBOL_GPL(class_device_del);
+EXPORT_SYMBOL_GPL(class_device_get);
+EXPORT_SYMBOL_GPL(class_device_put);
+EXPORT_SYMBOL_GPL(class_device_create_file);
+EXPORT_SYMBOL_GPL(class_device_remove_file);

-EXPORT_SYMBOL(class_interface_register);
-EXPORT_SYMBOL(class_interface_unregister);
+EXPORT_SYMBOL_GPL(class_interface_register);
+EXPORT_SYMBOL_GPL(class_interface_unregister);
diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/core.c linux-2.6-core/drivers/base/core.c
--- linux-2.6/drivers/base/core.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/core.c 2004-09-24 11:53:37.000000000 -0700
@@ -401,17 +401,17 @@
return subsystem_register(&devices_subsys);
}

-EXPORT_SYMBOL(device_for_each_child);
+EXPORT_SYMBOL_GPL(device_for_each_child);

-EXPORT_SYMBOL(device_initialize);
-EXPORT_SYMBOL(device_add);
-EXPORT_SYMBOL(device_register);
+EXPORT_SYMBOL_GPL(device_initialize);
+EXPORT_SYMBOL_GPL(device_add);
+EXPORT_SYMBOL_GPL(device_register);

-EXPORT_SYMBOL(device_del);
-EXPORT_SYMBOL(device_unregister);
-EXPORT_SYMBOL(get_device);
-EXPORT_SYMBOL(put_device);
-EXPORT_SYMBOL(device_find);
+EXPORT_SYMBOL_GPL(device_del);
+EXPORT_SYMBOL_GPL(device_unregister);
+EXPORT_SYMBOL_GPL(get_device);
+EXPORT_SYMBOL_GPL(put_device);
+EXPORT_SYMBOL_GPL(device_find);

-EXPORT_SYMBOL(device_create_file);
-EXPORT_SYMBOL(device_remove_file);
+EXPORT_SYMBOL_GPL(device_create_file);
+EXPORT_SYMBOL_GPL(device_remove_file);
diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/driver.c linux-2.6-core/drivers/base/driver.c
--- linux-2.6/drivers/base/driver.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/driver.c 2004-09-24 11:53:37.000000000 -0700
@@ -129,11 +129,11 @@
return NULL;
}

-EXPORT_SYMBOL(driver_register);
-EXPORT_SYMBOL(driver_unregister);
-EXPORT_SYMBOL(get_driver);
-EXPORT_SYMBOL(put_driver);
-EXPORT_SYMBOL(driver_find);
+EXPORT_SYMBOL_GPL(driver_register);
+EXPORT_SYMBOL_GPL(driver_unregister);
+EXPORT_SYMBOL_GPL(get_driver);
+EXPORT_SYMBOL_GPL(put_driver);
+EXPORT_SYMBOL_GPL(driver_find);

-EXPORT_SYMBOL(driver_create_file);
-EXPORT_SYMBOL(driver_remove_file);
+EXPORT_SYMBOL_GPL(driver_create_file);
+EXPORT_SYMBOL_GPL(driver_remove_file);
diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/firmware.c linux-2.6-core/drivers/base/firmware.c
--- linux-2.6/drivers/base/firmware.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/firmware.c 2004-09-24 11:53:37.000000000 -0700
@@ -30,5 +30,5 @@
return subsystem_register(&firmware_subsys);
}

-EXPORT_SYMBOL(firmware_register);
-EXPORT_SYMBOL(firmware_unregister);
+EXPORT_SYMBOL_GPL(firmware_register);
+EXPORT_SYMBOL_GPL(firmware_unregister);
diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/platform.c linux-2.6-core/drivers/base/platform.c
--- linux-2.6/drivers/base/platform.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/platform.c 2004-09-24 11:53:37.000000000 -0700
@@ -298,13 +298,13 @@
}
return mask & *dev->dma_mask;
}
-EXPORT_SYMBOL(dma_get_required_mask);
+EXPORT_SYMBOL_GPL(dma_get_required_mask);
#endif

-EXPORT_SYMBOL(platform_bus);
-EXPORT_SYMBOL(platform_bus_type);
-EXPORT_SYMBOL(platform_device_register);
-EXPORT_SYMBOL(platform_device_register_simple);
-EXPORT_SYMBOL(platform_device_unregister);
-EXPORT_SYMBOL(platform_get_irq);
-EXPORT_SYMBOL(platform_get_resource);
+EXPORT_SYMBOL_GPL(platform_bus);
+EXPORT_SYMBOL_GPL(platform_bus_type);
+EXPORT_SYMBOL_GPL(platform_device_register);
+EXPORT_SYMBOL_GPL(platform_device_register_simple);
+EXPORT_SYMBOL_GPL(platform_device_unregister);
+EXPORT_SYMBOL_GPL(platform_get_irq);
+EXPORT_SYMBOL_GPL(platform_get_resource);
diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/power/main.c linux-2.6-core/drivers/base/power/main.c
--- linux-2.6/drivers/base/power/main.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/power/main.c 2004-09-24 19:26:03.000000000 -0700
@@ -66,7 +66,7 @@
dev->power.pm_parent = parent;
device_pm_hold(parent);
}
-EXPORT_SYMBOL(device_pm_set_parent);
+EXPORT_SYMBOL_GPL(device_pm_set_parent);

int device_pm_add(struct device * dev)
{
diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/power/resume.c linux-2.6-core/drivers/base/power/resume.c
--- linux-2.6/drivers/base/power/resume.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/power/resume.c 2004-09-24 19:26:03.000000000 -0700
@@ -58,7 +58,7 @@
up(&dpm_sem);
}

-EXPORT_SYMBOL(device_resume);
+EXPORT_SYMBOL_GPL(device_resume);


/**
@@ -97,6 +97,6 @@
dpm_power_up();
}

-EXPORT_SYMBOL(device_power_up);
+EXPORT_SYMBOL_GPL(device_power_up);


diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/power/suspend.c linux-2.6-core/drivers/base/power/suspend.c
--- linux-2.6/drivers/base/power/suspend.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/power/suspend.c 2004-09-24 19:26:03.000000000 -0700
@@ -100,7 +100,7 @@
goto Done;
}

-EXPORT_SYMBOL(device_suspend);
+EXPORT_SYMBOL_GPL(device_suspend);


/**
@@ -132,5 +132,5 @@
goto Done;
}

-EXPORT_SYMBOL(device_power_down);
+EXPORT_SYMBOL_GPL(device_power_down);

diff -Nur -X /home/mochel/dontdiff linux-2.6/drivers/base/sys.c linux-2.6-core/drivers/base/sys.c
--- linux-2.6/drivers/base/sys.c 2004-09-23 12:04:36.000000000 -0700
+++ linux-2.6-core/drivers/base/sys.c 2004-09-24 11:53:37.000000000 -0700
@@ -73,8 +73,8 @@
sysfs_remove_file(&s->kobj, &a->attr);
}

-EXPORT_SYMBOL(sysdev_create_file);
-EXPORT_SYMBOL(sysdev_remove_file);
+EXPORT_SYMBOL_GPL(sysdev_create_file);
+EXPORT_SYMBOL_GPL(sysdev_remove_file);

/*
* declare system_subsys
@@ -98,8 +98,8 @@
kset_unregister(&cls->kset);
}

-EXPORT_SYMBOL(sysdev_class_register);
-EXPORT_SYMBOL(sysdev_class_unregister);
+EXPORT_SYMBOL_GPL(sysdev_class_register);
+EXPORT_SYMBOL_GPL(sysdev_class_unregister);


static LIST_HEAD(global_drivers);
@@ -157,8 +157,8 @@
up_write(&system_subsys.rwsem);
}

-EXPORT_SYMBOL(sysdev_driver_register);
-EXPORT_SYMBOL(sysdev_driver_unregister);
+EXPORT_SYMBOL_GPL(sysdev_driver_register);
+EXPORT_SYMBOL_GPL(sysdev_driver_unregister);



@@ -392,5 +392,5 @@
return subsystem_register(&system_subsys);
}

-EXPORT_SYMBOL(sysdev_register);
-EXPORT_SYMBOL(sysdev_unregister);
+EXPORT_SYMBOL_GPL(sysdev_register);
+EXPORT_SYMBOL_GPL(sysdev_unregister);
diff -Nur -X /home/mochel/dontdiff linux-2.6/fs/sysfs/bin.c linux-2.6-core/fs/sysfs/bin.c
--- linux-2.6/fs/sysfs/bin.c 2004-09-23 12:05:16.000000000 -0700
+++ linux-2.6-core/fs/sysfs/bin.c 2004-09-24 11:53:40.000000000 -0700
@@ -199,5 +199,5 @@
return 0;
}

-EXPORT_SYMBOL(sysfs_create_bin_file);
-EXPORT_SYMBOL(sysfs_remove_bin_file);
+EXPORT_SYMBOL_GPL(sysfs_create_bin_file);
+EXPORT_SYMBOL_GPL(sysfs_remove_bin_file);
diff -Nur -X /home/mochel/dontdiff linux-2.6/fs/sysfs/dir.c linux-2.6-core/fs/sysfs/dir.c
--- linux-2.6/fs/sysfs/dir.c 2004-09-23 12:05:16.000000000 -0700
+++ linux-2.6-core/fs/sysfs/dir.c 2004-09-24 11:53:40.000000000 -0700
@@ -193,7 +193,7 @@
return error;
}

-EXPORT_SYMBOL(sysfs_create_dir);
-EXPORT_SYMBOL(sysfs_remove_dir);
-EXPORT_SYMBOL(sysfs_rename_dir);
+EXPORT_SYMBOL_GPL(sysfs_create_dir);
+EXPORT_SYMBOL_GPL(sysfs_remove_dir);
+EXPORT_SYMBOL_GPL(sysfs_rename_dir);

diff -Nur -X /home/mochel/dontdiff linux-2.6/fs/sysfs/file.c linux-2.6-core/fs/sysfs/file.c
--- linux-2.6/fs/sysfs/file.c 2004-09-23 12:05:16.000000000 -0700
+++ linux-2.6-core/fs/sysfs/file.c 2004-09-24 11:53:40.000000000 -0700
@@ -436,7 +436,7 @@
}


-EXPORT_SYMBOL(sysfs_create_file);
-EXPORT_SYMBOL(sysfs_remove_file);
-EXPORT_SYMBOL(sysfs_update_file);
+EXPORT_SYMBOL_GPL(sysfs_create_file);
+EXPORT_SYMBOL_GPL(sysfs_remove_file);
+EXPORT_SYMBOL_GPL(sysfs_update_file);

diff -Nur -X /home/mochel/dontdiff linux-2.6/fs/sysfs/group.c linux-2.6-core/fs/sysfs/group.c
--- linux-2.6/fs/sysfs/group.c 2004-09-23 12:05:16.000000000 -0700
+++ linux-2.6-core/fs/sysfs/group.c 2004-09-24 11:53:40.000000000 -0700
@@ -78,5 +78,5 @@
}


-EXPORT_SYMBOL(sysfs_create_group);
-EXPORT_SYMBOL(sysfs_remove_group);
+EXPORT_SYMBOL_GPL(sysfs_create_group);
+EXPORT_SYMBOL_GPL(sysfs_remove_group);
diff -Nur -X /home/mochel/dontdiff linux-2.6/fs/sysfs/symlink.c linux-2.6-core/fs/sysfs/symlink.c
--- linux-2.6/fs/sysfs/symlink.c 2004-09-23 12:05:16.000000000 -0700
+++ linux-2.6-core/fs/sysfs/symlink.c 2004-09-24 11:53:40.000000000 -0700
@@ -159,6 +159,6 @@
free_page((unsigned long)page);
}

-EXPORT_SYMBOL(sysfs_create_link);
-EXPORT_SYMBOL(sysfs_remove_link);
+EXPORT_SYMBOL_GPL(sysfs_create_link);
+EXPORT_SYMBOL_GPL(sysfs_remove_link);

diff -Nur -X /home/mochel/dontdiff linux-2.6/lib/kobject.c linux-2.6-core/lib/kobject.c
--- linux-2.6/lib/kobject.c 2004-09-23 12:05:32.000000000 -0700
+++ linux-2.6-core/lib/kobject.c 2004-09-24 11:54:51.000000000 -0700
@@ -393,7 +393,7 @@
return error;
}

-EXPORT_SYMBOL(kobject_set_name);
+EXPORT_SYMBOL_GPL(kobject_set_name);


/**
@@ -645,23 +645,23 @@
}
}

-EXPORT_SYMBOL(kobject_get_path);
-EXPORT_SYMBOL(kobject_init);
-EXPORT_SYMBOL(kobject_register);
-EXPORT_SYMBOL(kobject_unregister);
-EXPORT_SYMBOL(kobject_get);
-EXPORT_SYMBOL(kobject_put);
-EXPORT_SYMBOL(kobject_add);
-EXPORT_SYMBOL(kobject_del);
-EXPORT_SYMBOL(kobject_rename);
-EXPORT_SYMBOL(kobject_hotplug);
-
-EXPORT_SYMBOL(kset_register);
-EXPORT_SYMBOL(kset_unregister);
-EXPORT_SYMBOL(kset_find_obj);
-
-EXPORT_SYMBOL(subsystem_init);
-EXPORT_SYMBOL(subsystem_register);
-EXPORT_SYMBOL(subsystem_unregister);
-EXPORT_SYMBOL(subsys_create_file);
-EXPORT_SYMBOL(subsys_remove_file);
+EXPORT_SYMBOL_GPL(kobject_get_path);
+EXPORT_SYMBOL_GPL(kobject_init);
+EXPORT_SYMBOL_GPL(kobject_register);
+EXPORT_SYMBOL_GPL(kobject_unregister);
+EXPORT_SYMBOL_GPL(kobject_get);
+EXPORT_SYMBOL_GPL(kobject_put);
+EXPORT_SYMBOL_GPL(kobject_add);
+EXPORT_SYMBOL_GPL(kobject_del);
+EXPORT_SYMBOL_GPL(kobject_rename);
+EXPORT_SYMBOL_GPL(kobject_hotplug);
+
+EXPORT_SYMBOL_GPL(kset_register);
+EXPORT_SYMBOL_GPL(kset_unregister);
+EXPORT_SYMBOL_GPL(kset_find_obj);
+
+EXPORT_SYMBOL_GPL(subsystem_init);
+EXPORT_SYMBOL_GPL(subsystem_register);
+EXPORT_SYMBOL_GPL(subsystem_unregister);
+EXPORT_SYMBOL_GPL(subsys_create_file);
+EXPORT_SYMBOL_GPL(subsys_remove_file);