svn commit: trunk/busybox/debianutils

vda at busybox.net vda at busybox.net
Sat Apr 19 21:30:52 UTC 2008


Author: vda
Date: 2008-04-19 14:30:52 -0700 (Sat, 19 Apr 2008)
New Revision: 21778

Log:
start_stop_daemon: optimization - do not pass paramenter, use
existing globals instead

function                                             old     new   delta
start_stop_daemon_main                               792     976    +184
check                                               1618    1620      +2
do_procinit                                          196       -    -196
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 2/0 up/down: 186/-196)          Total: -10 bytes



Modified:
   trunk/busybox/debianutils/start_stop_daemon.c


Changeset:
Modified: trunk/busybox/debianutils/start_stop_daemon.c
===================================================================
--- trunk/busybox/debianutils/start_stop_daemon.c	2008-04-19 20:44:13 UTC (rev 21777)
+++ trunk/busybox/debianutils/start_stop_daemon.c	2008-04-19 21:30:52 UTC (rev 21778)
@@ -65,7 +65,7 @@
 	return 0;
 }
 
-static int pid_is_user(int pid, int uid)
+static int pid_is_user(int pid)
 {
 	struct stat sb;
 	char buf[sizeof("/proc/") + sizeof(int)*3];
@@ -73,10 +73,10 @@
 	sprintf(buf, "/proc/%u", pid);
 	if (stat(buf, &sb) != 0)
 		return 0;
-	return (sb.st_uid == uid);
+	return (sb.st_uid == user_id);
 }
 
-static int pid_is_cmd(pid_t pid, const char *name)
+static int pid_is_cmd(pid_t pid)
 {
 	char fname[sizeof("/proc//stat") + sizeof(int)*3];
 	char *buf;
@@ -90,7 +90,7 @@
 			char *pe = strrchr(++p, ')');
 			if (pe) {
 				*pe = '\0';
-				r = !strcmp(p, name);
+				r = !strcmp(p, cmdname);
 			}
 		}
 		free(buf);
@@ -105,10 +105,10 @@
 	if (execname && !pid_is_exec(pid)) {
 		return;
 	}
-	if (userspec && !pid_is_user(pid, user_id)) {
+	if (userspec && !pid_is_user(pid)) {
 		return;
 	}
-	if (cmdname && !pid_is_cmd(pid, cmdname)) {
+	if (cmdname && !pid_is_cmd(pid)) {
 		return;
 	}
 	p = xmalloc(sizeof(*p));
@@ -169,8 +169,6 @@
 	struct pid_list *p;
 	int killed = 0;
 
-	do_procinit();
-
 	if (cmdname) {
 		if (ENABLE_FEATURE_CLEAN_UP) what = xstrdup(cmdname);
 		if (!ENABLE_FEATURE_CLEAN_UP) what = cmdname;
@@ -308,13 +306,13 @@
 	if (execname)
 		xstat(execname, &execstat);
 
+	do_procinit(); /* Both start and stop needs to know current processes */
+
 	if (opt & CTX_STOP) {
 		int i = do_stop();
 		return (opt & OPT_OKNODO) ? 0 : (i <= 0);
 	}
 
-	do_procinit();
-
 	if (found) {
 		if (!quiet)
 			printf("%s already running\n%d\n", execname, found->pid);




More information about the busybox-cvs mailing list