[PATCH] remove CONFIG_KOBJECT_UEVENT option

It makes zero sense to have hotplug, but not the netlink
events enabled today. Remove this option and merge the
kobject_uevent.h header into the kobject.h header file.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Kay Sievers 2005-11-11 05:33:52 +01:00 committed by Greg Kroah-Hartman
parent 0343821177
commit 0296b22813
8 changed files with 40 additions and 107 deletions

View File

@ -1476,12 +1476,6 @@ W: http://nfs.sourceforge.net/
W: http://www.cse.unsw.edu.au/~neilb/patches/linux-devel/ W: http://www.cse.unsw.edu.au/~neilb/patches/linux-devel/
S: Maintained S: Maintained
KERNEL EVENT LAYER (KOBJECT_UEVENT)
P: Robert Love
M: rml@novell.com
L: linux-kernel@vger.kernel.org
S: Maintained
KEXEC KEXEC
P: Eric Biederman P: Eric Biederman
P: Randy Dunlap P: Randy Dunlap

View File

@ -18,7 +18,6 @@
#include <linux/random.h> #include <linux/random.h>
#include <linux/major.h> #include <linux/major.h>
#include <linux/proc_fs.h> #include <linux/proc_fs.h>
#include <linux/kobject_uevent.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/poll.h> #include <linux/poll.h>
#include <linux/device.h> #include <linux/device.h>

View File

@ -34,7 +34,6 @@
#include <linux/miscdevice.h> #include <linux/miscdevice.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
#include <linux/kobject_uevent.h>
#include <linux/proc_fs.h> #include <linux/proc_fs.h>
#include <linux/syscalls.h> #include <linux/syscalls.h>
#include "z90crypt.h" #include "z90crypt.h"

View File

@ -23,15 +23,31 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/rwsem.h> #include <linux/rwsem.h>
#include <linux/kref.h> #include <linux/kref.h>
#include <linux/kobject_uevent.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <asm/atomic.h> #include <asm/atomic.h>
#define KOBJ_NAME_LEN 20 #define KOBJ_NAME_LEN 20
#define HOTPLUG_PATH_LEN 256
/* path to the userspace helper executed on an event */
extern char hotplug_path[];
/* counter to tag the hotplug event, read only except for the kobject core */ /* counter to tag the hotplug event, read only except for the kobject core */
extern u64 hotplug_seqnum; extern u64 hotplug_seqnum;
/* the actions here must match the proper string in lib/kobject_uevent.c */
typedef int __bitwise kobject_action_t;
enum kobject_action {
KOBJ_ADD = (__force kobject_action_t) 0x01, /* add event, for hotplug */
KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* remove event, for hotplug */
KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* a sysfs attribute file has changed */
KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices */
KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices */
KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* offline event for hotplug devices */
KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* online event for hotplug devices */
};
struct kobject { struct kobject {
const char * k_name; const char * k_name;
char name[KOBJ_NAME_LEN]; char name[KOBJ_NAME_LEN];
@ -243,16 +259,33 @@ extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *);
#ifdef CONFIG_HOTPLUG #ifdef CONFIG_HOTPLUG
void kobject_hotplug(struct kobject *kobj, enum kobject_action action); void kobject_hotplug(struct kobject *kobj, enum kobject_action action);
int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, int add_hotplug_env_var(char **envp, int num_envp, int *cur_index,
char *buffer, int buffer_size, int *cur_len, char *buffer, int buffer_size, int *cur_len,
const char *format, ...) const char *format, ...)
__attribute__((format (printf, 7, 8))); __attribute__((format (printf, 7, 8)));
int kobject_uevent(struct kobject *kobj,
enum kobject_action action,
struct attribute *attr);
int kobject_uevent_atomic(struct kobject *kobj,
enum kobject_action action,
struct attribute *attr);
#else #else
static inline void kobject_hotplug(struct kobject *kobj, enum kobject_action action) { } static inline void kobject_hotplug(struct kobject *kobj, enum kobject_action action) { }
static inline int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, static inline int add_hotplug_env_var(char **envp, int num_envp, int *cur_index,
char *buffer, int buffer_size, int *cur_len, char *buffer, int buffer_size, int *cur_len,
const char *format, ...) const char *format, ...)
{ return 0; } { return 0; }
int kobject_uevent(struct kobject *kobj,
enum kobject_action action,
struct attribute *attr)
{ return 0; }
int kobject_uevent_atomic(struct kobject *kobj,
enum kobject_action action,
struct attribute *attr)
{ return 0; }
#endif #endif
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */

View File

@ -1,57 +0,0 @@
/*
* kobject_uevent.h - list of kobject user events that can be generated
*
* Copyright (C) 2004 IBM Corp.
* Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
*
* This file is released under the GPLv2.
*
*/
#ifndef _KOBJECT_EVENT_H_
#define _KOBJECT_EVENT_H_
#define HOTPLUG_PATH_LEN 256
/* path to the hotplug userspace helper executed on an event */
extern char hotplug_path[];
/*
* If you add an action here, you must also add the proper string to the
* lib/kobject_uevent.c file.
*/
typedef int __bitwise kobject_action_t;
enum kobject_action {
KOBJ_ADD = (__force kobject_action_t) 0x01, /* add event, for hotplug */
KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* remove event, for hotplug */
KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* a sysfs attribute file has changed */
KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices */
KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices */
KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* offline event for hotplug devices */
KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* online event for hotplug devices */
};
#ifdef CONFIG_KOBJECT_UEVENT
int kobject_uevent(struct kobject *kobj,
enum kobject_action action,
struct attribute *attr);
int kobject_uevent_atomic(struct kobject *kobj,
enum kobject_action action,
struct attribute *attr);
#else
static inline int kobject_uevent(struct kobject *kobj,
enum kobject_action action,
struct attribute *attr)
{
return 0;
}
static inline int kobject_uevent_atomic(struct kobject *kobj,
enum kobject_action action,
struct attribute *attr)
{
return 0;
}
#endif
#endif

View File

@ -205,25 +205,6 @@ config HOTPLUG
modules require HOTPLUG functionality, but a module built modules require HOTPLUG functionality, but a module built
outside the kernel tree does. Such modules require Y here. outside the kernel tree does. Such modules require Y here.
config KOBJECT_UEVENT
bool "Kernel Userspace Events" if EMBEDDED
depends on NET
default y
help
This option enables the kernel userspace event layer, which is a
simple mechanism for kernel-to-user communication over a netlink
socket.
The goal of the kernel userspace events layer is to provide a simple
and efficient events system, that notifies userspace about kobject
state changes. This will enable applications to just listen for
events instead of polling system devices and files.
Hotplug events (kobject addition and removal) are also available on
the netlink socket in addition to the execution of /sbin/hotplug if
CONFIG_HOTPLUG is enabled.
Say Y, unless you are building a system requiring minimal memory
consumption.
config IKCONFIG config IKCONFIG
bool "Kernel .config support" bool "Kernel .config support"
---help--- ---help---

View File

@ -31,6 +31,7 @@
#include <linux/smp_lock.h> #include <linux/smp_lock.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/kobject.h>
#include <linux/net.h> #include <linux/net.h>
#include <linux/sysrq.h> #include <linux/sysrq.h>
#include <linux/highuid.h> #include <linux/highuid.h>
@ -83,9 +84,6 @@ static int ngroups_max = NGROUPS_MAX;
#ifdef CONFIG_KMOD #ifdef CONFIG_KMOD
extern char modprobe_path[]; extern char modprobe_path[];
#endif #endif
#ifdef CONFIG_HOTPLUG
extern char hotplug_path[];
#endif
#ifdef CONFIG_CHR_DEV_SG #ifdef CONFIG_CHR_DEV_SG
extern int sg_big_buff; extern int sg_big_buff;
#endif #endif

View File

@ -19,14 +19,17 @@
#include <linux/skbuff.h> #include <linux/skbuff.h>
#include <linux/netlink.h> #include <linux/netlink.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/kobject_uevent.h>
#include <linux/kobject.h> #include <linux/kobject.h>
#include <net/sock.h> #include <net/sock.h>
#define BUFFER_SIZE 1024 /* buffer for the hotplug env */ #define BUFFER_SIZE 1024 /* buffer for the hotplug env */
#define NUM_ENVP 32 /* number of env pointers */ #define NUM_ENVP 32 /* number of env pointers */
#if defined(CONFIG_KOBJECT_UEVENT) || defined(CONFIG_HOTPLUG) #if defined(CONFIG_HOTPLUG)
char hotplug_path[HOTPLUG_PATH_LEN] = "/sbin/hotplug";
u64 hotplug_seqnum;
static DEFINE_SPINLOCK(sequence_lock);
static char *action_to_string(enum kobject_action action) static char *action_to_string(enum kobject_action action)
{ {
switch (action) { switch (action) {
@ -48,9 +51,7 @@ static char *action_to_string(enum kobject_action action)
return NULL; return NULL;
} }
} }
#endif
#ifdef CONFIG_KOBJECT_UEVENT
static struct sock *uevent_sock; static struct sock *uevent_sock;
/** /**
@ -168,21 +169,6 @@ static int __init kobject_uevent_init(void)
postcore_initcall(kobject_uevent_init); postcore_initcall(kobject_uevent_init);
#else
static inline int send_uevent(const char *signal, const char *obj,
char **envp, int gfp_mask)
{
return 0;
}
#endif /* CONFIG_KOBJECT_UEVENT */
#ifdef CONFIG_HOTPLUG
char hotplug_path[HOTPLUG_PATH_LEN] = "/sbin/hotplug";
u64 hotplug_seqnum;
static DEFINE_SPINLOCK(sequence_lock);
/** /**
* kobject_hotplug - notify userspace by executing /sbin/hotplug * kobject_hotplug - notify userspace by executing /sbin/hotplug
* *