mirror of https://github.com/hak5/openwrt-owl.git
parent
ec07b537ee
commit
19ccf08628
|
@ -1,44 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2006-2009 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=hotplug2-old
|
||||
PKG_VERSION:=0.9
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE:=hotplug2-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://isteve.bofh.cz/~isteve/hotplug2
|
||||
PKG_MD5SUM:=ea2c01d027b4002e4e6b0ff266f51a51
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/hotplug2-$(PKG_VERSION)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/hotplug2-old
|
||||
SECTION:=base
|
||||
CATEGORY:=Base system
|
||||
VERSION:=0.9+r102-$(PKG_RELEASE)
|
||||
TITLE:=Dynamic device management subsystem for embedded systems
|
||||
URL:=http://isteve.bofh.cz/~isteve/hotplug2/
|
||||
endef
|
||||
|
||||
define Package/hotplug2-old/description
|
||||
Hotplug2 is a trivial replacement of some of the UDev functionality
|
||||
in a tiny pack, intended for Linux early userspace: Init RAM FS and InitRD.
|
||||
endef
|
||||
|
||||
MAKE_FLAGS += CFLAGS="$(TARGET_CFLAGS) -DHAVE_RULES -I."
|
||||
|
||||
define Package/hotplug2-old/install
|
||||
$(INSTALL_DIR) $(1)/etc
|
||||
$(INSTALL_DATA) ./files/hotplug2.rules $(1)/etc/
|
||||
$(INSTALL_DIR) $(1)/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/hotplug2 $(1)/sbin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,hotplug2-old))
|
|
@ -1,10 +0,0 @@
|
|||
$include /etc/hotplug2-common.rules
|
||||
|
||||
SUBSYSTEM ~~ (net|button|usb|platform|ieee1394|block|atm) {
|
||||
exec /sbin/hotplug-call %SUBSYSTEM%;
|
||||
}
|
||||
|
||||
DEVICENAME ~~ (watchdog) {
|
||||
exec /sbin/watchdog -t 5 /dev/watchdog;
|
||||
next
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,22 +0,0 @@
|
|||
Index: hotplug2-0.9/rules.c
|
||||
===================================================================
|
||||
--- hotplug2-0.9.orig/rules.c 2007-07-18 09:15:38.968308540 +0200
|
||||
+++ hotplug2-0.9/rules.c 2007-07-18 09:18:52.135316499 +0200
|
||||
@@ -756,6 +756,7 @@
|
||||
ERROR("rules parse","Unable to parse rules file.");
|
||||
return -1;
|
||||
}
|
||||
+ *return_rules = rules;
|
||||
|
||||
unmap_file(&filemap);
|
||||
|
||||
@@ -997,7 +998,8 @@
|
||||
|
||||
if (!terminate) {
|
||||
/* A little bit hacky cleanup */
|
||||
- return_rules->rules_c--;
|
||||
+ if (!nested)
|
||||
+ return_rules->rules_c--;
|
||||
return return_rules;
|
||||
} else {
|
||||
/*
|
|
@ -1,138 +0,0 @@
|
|||
Index: hotplug2-0.9/hotplug2.c
|
||||
===================================================================
|
||||
--- hotplug2-0.9.orig/hotplug2.c 2008-08-04 10:02:27.000000000 +0200
|
||||
+++ hotplug2-0.9/hotplug2.c 2008-08-04 10:03:04.000000000 +0200
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <sys/mman.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/netlink.h>
|
||||
+#include <poll.h>
|
||||
|
||||
#include "mem_utils.h"
|
||||
#include "filemap_utils.h"
|
||||
@@ -492,6 +493,11 @@
|
||||
char *coldplug_command = NULL;
|
||||
char *rules_file = HOTPLUG2_RULE_PATH;
|
||||
sigset_t block_mask;
|
||||
+ struct pollfd msg_poll;
|
||||
+
|
||||
+ struct hotplug2_event_t *backlog = NULL;
|
||||
+ struct hotplug2_event_t *backlog_tail = NULL;
|
||||
+ int n_backlog = 0;
|
||||
|
||||
struct rules_t *rules = NULL;
|
||||
struct filemap_t filemap;
|
||||
@@ -602,6 +608,8 @@
|
||||
* Open netlink socket to read the uevents
|
||||
*/
|
||||
netlink_socket = init_netlink_socket(NETLINK_BIND);
|
||||
+ msg_poll.fd = netlink_socket;
|
||||
+ msg_poll.events = POLLIN;
|
||||
|
||||
if (netlink_socket == -1) {
|
||||
ERROR("netlink init","Unable to open netlink socket.");
|
||||
@@ -642,20 +650,44 @@
|
||||
* Main loop reading uevents
|
||||
*/
|
||||
while (!terminate) {
|
||||
- /*
|
||||
- * Read the uevent packet
|
||||
- */
|
||||
- size = recv(netlink_socket, &buffer, sizeof(buffer), 0);
|
||||
- recv_errno = errno;
|
||||
+ if ((n_backlog > 0) && (child_c < max_child_c)) {
|
||||
+ /* dequeue backlog message */
|
||||
+ tmpevent = backlog;
|
||||
+ backlog = backlog->next;
|
||||
+ n_backlog--;
|
||||
+ if (backlog_tail == tmpevent)
|
||||
+ backlog_tail = NULL;
|
||||
+ } else {
|
||||
+ /*
|
||||
+ * Read the uevent packet
|
||||
+ */
|
||||
+ if (n_backlog >= HOTPLUG2_MSG_BACKLOG) {
|
||||
+ usleep(HOTPLUG2_THROTTLE_INTERVAL * 1000);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if ((n_backlog > 0) && (child_c >= max_child_c)) {
|
||||
+ int fds;
|
||||
+ msg_poll.revents = 0;
|
||||
+ fds = poll(&msg_poll, 1, HOTPLUG2_THROTTLE_INTERVAL);
|
||||
+ if (fds < 0) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (fds == 0)
|
||||
+ continue;
|
||||
+ }
|
||||
+ size = recv(netlink_socket, &buffer, sizeof(buffer), 0);
|
||||
+ recv_errno = errno;
|
||||
|
||||
- /*
|
||||
- * Parse the event into an event structure
|
||||
- */
|
||||
- tmpevent = get_hotplug2_event(buffer, size);
|
||||
+ /*
|
||||
+ * Parse the event into an event structure
|
||||
+ */
|
||||
+ tmpevent = get_hotplug2_event(buffer, size);
|
||||
|
||||
- if (tmpevent == NULL) {
|
||||
- ERROR("reading events", "Malformed event read (missing action prefix).");
|
||||
- continue;
|
||||
+ if (tmpevent == NULL) {
|
||||
+ ERROR("reading events", "Malformed event read (missing action prefix).");
|
||||
+ continue;
|
||||
+ }
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -706,13 +738,16 @@
|
||||
* Unless, of course, we've specified otherwise and no rules that match
|
||||
* need throttling.
|
||||
*/
|
||||
- if (!flags & FLAG_NOTHROTTLE) {
|
||||
- /*
|
||||
- * Okay, throttle away!
|
||||
- */
|
||||
- while (child_c >= max_child_c) {
|
||||
- usleep(HOTPLUG2_THROTTLE_INTERVAL);
|
||||
- }
|
||||
+ if (!(flags & FLAG_NOTHROTTLE) && (child_c >= max_child_c)) {
|
||||
+ /* log the packet and process it later */
|
||||
+ if (backlog_tail)
|
||||
+ backlog_tail->next = tmpevent;
|
||||
+ else
|
||||
+ backlog = tmpevent;
|
||||
+ tmpevent->next = NULL;
|
||||
+ backlog_tail = tmpevent;
|
||||
+ n_backlog++;
|
||||
+ continue;
|
||||
}
|
||||
|
||||
sigemptyset(&block_mask);
|
||||
Index: hotplug2-0.9/hotplug2.h
|
||||
===================================================================
|
||||
--- hotplug2-0.9.orig/hotplug2.h 2008-08-04 10:02:27.000000000 +0200
|
||||
+++ hotplug2-0.9/hotplug2.h 2008-08-04 10:02:27.000000000 +0200
|
||||
@@ -45,9 +45,9 @@
|
||||
#define DBG(action, fmt, arg...)
|
||||
#endif
|
||||
|
||||
+#define HOTPLUG2_MSG_BACKLOG 64
|
||||
#define UEVENT_BUFFER_SIZE 2048
|
||||
-#define HOTPLUG2_POLL_INTERVAL 20000
|
||||
-#define HOTPLUG2_THROTTLE_INTERVAL 10000
|
||||
+#define HOTPLUG2_THROTTLE_INTERVAL 50
|
||||
#define HOTPLUG2_RULE_PATH "/etc/hotplug2.rules"
|
||||
|
||||
#define ACTION_ADD 0
|
||||
@@ -76,6 +76,7 @@
|
||||
int env_vars_c;
|
||||
char *plain;
|
||||
int plain_s;
|
||||
+ struct hotplug2_event_t *next;
|
||||
};
|
||||
|
||||
struct options_t {
|
Loading…
Reference in New Issue