mirror of https://gitee.com/openkylin/linux.git
[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:
parent
0343821177
commit
0296b22813
|
@ -1476,12 +1476,6 @@ W: http://nfs.sourceforge.net/
|
|||
W: http://www.cse.unsw.edu.au/~neilb/patches/linux-devel/
|
||||
S: Maintained
|
||||
|
||||
KERNEL EVENT LAYER (KOBJECT_UEVENT)
|
||||
P: Robert Love
|
||||
M: rml@novell.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
KEXEC
|
||||
P: Eric Biederman
|
||||
P: Randy Dunlap
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include <linux/random.h>
|
||||
#include <linux/major.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/kobject_uevent.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/device.h>
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
#include <linux/miscdevice.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/moduleparam.h>
|
||||
#include <linux/kobject_uevent.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/syscalls.h>
|
||||
#include "z90crypt.h"
|
||||
|
|
|
@ -23,15 +23,31 @@
|
|||
#include <linux/spinlock.h>
|
||||
#include <linux/rwsem.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/kobject_uevent.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
#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 */
|
||||
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 {
|
||||
const char * k_name;
|
||||
char name[KOBJ_NAME_LEN];
|
||||
|
@ -243,16 +259,33 @@ extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *);
|
|||
|
||||
#ifdef CONFIG_HOTPLUG
|
||||
void kobject_hotplug(struct kobject *kobj, enum kobject_action action);
|
||||
|
||||
int add_hotplug_env_var(char **envp, int num_envp, int *cur_index,
|
||||
char *buffer, int buffer_size, int *cur_len,
|
||||
const char *format, ...)
|
||||
__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
|
||||
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,
|
||||
char *buffer, int buffer_size, int *cur_len,
|
||||
const char *format, ...)
|
||||
{ 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 /* __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
|
||||
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
|
||||
bool "Kernel .config support"
|
||||
---help---
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include <linux/smp_lock.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/kobject.h>
|
||||
#include <linux/net.h>
|
||||
#include <linux/sysrq.h>
|
||||
#include <linux/highuid.h>
|
||||
|
@ -83,9 +84,6 @@ static int ngroups_max = NGROUPS_MAX;
|
|||
#ifdef CONFIG_KMOD
|
||||
extern char modprobe_path[];
|
||||
#endif
|
||||
#ifdef CONFIG_HOTPLUG
|
||||
extern char hotplug_path[];
|
||||
#endif
|
||||
#ifdef CONFIG_CHR_DEV_SG
|
||||
extern int sg_big_buff;
|
||||
#endif
|
||||
|
|
|
@ -19,14 +19,17 @@
|
|||
#include <linux/skbuff.h>
|
||||
#include <linux/netlink.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/kobject_uevent.h>
|
||||
#include <linux/kobject.h>
|
||||
#include <net/sock.h>
|
||||
|
||||
#define BUFFER_SIZE 1024 /* buffer for the hotplug env */
|
||||
#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)
|
||||
{
|
||||
switch (action) {
|
||||
|
@ -48,9 +51,7 @@ static char *action_to_string(enum kobject_action action)
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KOBJECT_UEVENT
|
||||
static struct sock *uevent_sock;
|
||||
|
||||
/**
|
||||
|
@ -168,21 +169,6 @@ static int __init kobject_uevent_init(void)
|
|||
|
||||
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
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue