[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:
Родитель
0343821177
Коммит
0296b22813
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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__ */
|
||||||
|
|
|
@ -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
|
|
19
init/Kconfig
19
init/Kconfig
|
@ -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---
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*
|
*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче