Revert taskset for 1.2.0. It emits a warning, breaks building under RH9,
and nobody seemed interested in fixing it despite repeated complaints. I'll worry about it in the 1.3 timeframe...
This commit is contained in:
		| @@ -262,7 +262,6 @@ USE_BB_SYSCTL(APPLET(sysctl, _BB_DIR_SBIN, _BB_SUID_NEVER)) | ||||
| USE_SYSLOGD(APPLET(syslogd, _BB_DIR_SBIN, _BB_SUID_NEVER)) | ||||
| USE_TAIL(APPLET(tail, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) | ||||
| USE_TAR(APPLET(tar, _BB_DIR_BIN, _BB_SUID_NEVER)) | ||||
| USE_TASKSET(APPLET(taskset, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) | ||||
| USE_TEE(APPLET(tee, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) | ||||
| USE_TELNET(APPLET(telnet, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) | ||||
| USE_TELNETD(APPLET(telnetd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)) | ||||
|   | ||||
| @@ -2967,23 +2967,6 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \ | ||||
| 	"$ zcat /tmp/tarball.tar.gz | tar -xf -\n" \ | ||||
| 	"$ tar -cf /tmp/tarball.tar /usr/local\n" | ||||
|  | ||||
| #define taskset_trivial_usage \ | ||||
| 	"[OPTIONS] [mask] [pid | command [arg]...]" | ||||
| #define taskset_full_usage \ | ||||
| 	"Set or get CPU affinity.\n\n" \ | ||||
| 	"Options:\n" \ | ||||
| 	"\t-p\toperate on an existing PID" | ||||
| #define taskset_example_usage \ | ||||
| 	"$ taskset 0x7 ./dgemm_test&\n" \ | ||||
| 	"$ taskset -p 0x1 $!\n" \ | ||||
| 	"pid 4790's current affinity mask: 7\n" \ | ||||
| 	"pid 4790's new affinity mask: 1\n" \ | ||||
| 	"$ taskset 0x7 /bin/sh -c './taskset -p 0x1 $$'\n" \ | ||||
| 	"pid 6671's current affinity mask: 1\n" \ | ||||
| 	"pid 6671's new affinity mask: 1\n" \ | ||||
| 	"$ taskset -p 1\n" | ||||
| 	"pid 1's current affinity mask: 3\n" | ||||
|  | ||||
| #define tee_trivial_usage \ | ||||
| 	"[OPTION]... [FILE]..." | ||||
| #define tee_full_usage \ | ||||
|   | ||||
| @@ -311,6 +311,12 @@ config CONFIG_TASKSET | ||||
| 	help | ||||
| 	  Retrieve or set a processes's CPU affinity | ||||
|  | ||||
| config CONFIG_TASKSET | ||||
| 	bool "taskset" | ||||
| 	default n | ||||
| 	help | ||||
| 	  Retrieve or set a processes's CPU affinity (on linux) | ||||
|  | ||||
| config CONFIG_TIME | ||||
| 	bool "time" | ||||
| 	default n | ||||
|   | ||||
| @@ -28,7 +28,6 @@ MISCUTILS-$(CONFIG_RUNLEVEL)    += runlevel.o | ||||
| MISCUTILS-$(CONFIG_RX)          += rx.o | ||||
| MISCUTILS-$(CONFIG_SETSID)      += setsid.o | ||||
| MISCUTILS-$(CONFIG_STRINGS)     += strings.o | ||||
| MISCUTILS-$(CONFIG_TASKSET)     += taskset.o | ||||
| MISCUTILS-$(CONFIG_TIME)        += time.o | ||||
| MISCUTILS-$(CONFIG_WATCHDOG)    += watchdog.o | ||||
|  | ||||
|   | ||||
| @@ -1,67 +0,0 @@ | ||||
| /* vi: set sw=4 ts=4: */ | ||||
| /* | ||||
|  * taskset - retrieve or set a processes's CPU affinity | ||||
|  * Copyright (c) 2006 Bernhard Fischer | ||||
|  * | ||||
|  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. | ||||
|  */ | ||||
|  | ||||
| #include "busybox.h" | ||||
| #include <sched.h> | ||||
| #include <unistd.h> | ||||
| #include <getopt.h> /* optind */ | ||||
|  | ||||
| int taskset_main(int argc, char** argv) | ||||
| { | ||||
| 	cpu_set_t mask, new_mask; | ||||
| 	pid_t pid = 0; | ||||
| 	unsigned long ul; | ||||
| 	const char *state = "current\0new"; | ||||
| 	char *p_opt = NULL, *aff = NULL; | ||||
|  | ||||
| 	ul = bb_getopt_ulflags(argc, argv, "+p:", &p_opt); | ||||
| #define TASKSET_OPT_p (1) | ||||
|  | ||||
| 	if (ul & TASKSET_OPT_p) { | ||||
| 		if (argc == optind+1) { /* -p <aff> <pid> */ | ||||
| 			aff = p_opt; | ||||
| 			p_opt = argv[optind]; | ||||
| 		} | ||||
| 		argv += optind; /* me -p <arg> */ | ||||
| 		pid = bb_xgetularg10_bnd(p_opt, 1, ULONG_MAX); /* -p <pid> */ | ||||
| 	} else | ||||
| 		aff = *++argv; /* <aff> <cmd...> */ | ||||
| 	if (aff) { | ||||
| /*		to_cpuset(bb_xgetularg_bnd(aff, 16, 1, ULONG_MAX), &new_mask); */ | ||||
| 		unsigned i = 0; | ||||
| 		unsigned long l = bb_xgetularg_bnd(aff, 16, 1, ULONG_MAX); | ||||
|  | ||||
| 		CPU_ZERO(&new_mask); | ||||
| 		while (i < CPU_SETSIZE && l >= (1<<i)) { | ||||
| 			if ((1<<i) & l) | ||||
| 				CPU_SET(i, &new_mask); | ||||
| 			++i; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if (ul & TASKSET_OPT_p) { | ||||
| print_aff: | ||||
| 		if (sched_getaffinity(pid, sizeof (mask), &mask) < 0) | ||||
| 			bb_perror_msg_and_die("Failed to %cet pid %d's affinity", 'g', pid); | ||||
| 		bb_printf("pid %d's %s affinity mask: %x\n", /* %x .. perhaps _FANCY */ | ||||
| 				pid, state, mask); | ||||
| 		if (!*argv) /* no new affinity given or we did print already, done. */ | ||||
| 			return EXIT_SUCCESS; | ||||
| 	} | ||||
|  | ||||
| 	if (sched_setaffinity(pid, sizeof (new_mask), &new_mask)) | ||||
| 		bb_perror_msg_and_die("Failed to %cet pid %d's affinity", 's', pid); | ||||
| 	if (ul & TASKSET_OPT_p) { | ||||
| 		state += 8; | ||||
| 		++argv; | ||||
| 		goto print_aff; | ||||
| 	} | ||||
| 	++argv; | ||||
| 	execvp(*argv, argv); | ||||
| 	bb_perror_msg_and_die("%s", *argv); | ||||
| } | ||||
| @@ -1,17 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # Copyright 2006 Bernhard Fischer | ||||
| # Licensed under GPL v2 or later, see file LICENSE for details. | ||||
|  | ||||
| . testing.sh | ||||
| a="taskset" | ||||
|  | ||||
| # testing "test name"              "opts" "expected result" "file inp" "stdin" | ||||
| testing "taskset (get from pid 1)" "$a -p1 >/dev/null;echo \$?" "0\n" "" "" | ||||
| testing "taskset (invalid pid)"    "$a -p0 >/dev/null 2>&1;echo \$?" "1\n" "" "" | ||||
| testing "taskset (set_aff, needs CAP_SYS_NICE)" \ | ||||
|                                    "$a 0x1 $SHELL -c $a\ -p\ \$$\|grep\ \"current\ affinity\ mask:\ 1\" >/dev/null;echo \$?" \ | ||||
| 				                                "0\n" "" "" | ||||
|  | ||||
| unset a | ||||
| exit $FAILCOUNT | ||||
		Reference in New Issue
	
	Block a user