Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.15-rc2 118 lines 2.6 kB view raw
1#include <unistd.h> 2#include <stdio.h> 3#include <errno.h> 4#include <stdlib.h> 5#include <limits.h> 6#include <string.h> 7#include <ctype.h> 8 9#include <getopt.h> 10 11#include "cpufreq.h" 12#include "helpers/helpers.h" 13#include "helpers/sysfs.h" 14 15static struct option info_opts[] = { 16 { .name = "disable", .has_arg = required_argument, .flag = NULL, .val = 'd'}, 17 { .name = "enable", .has_arg = required_argument, .flag = NULL, .val = 'e'}, 18 { }, 19}; 20 21 22int cmd_idle_set(int argc, char **argv) 23{ 24 extern char *optarg; 25 extern int optind, opterr, optopt; 26 int ret = 0, cont = 1, param = 0, idlestate = 0; 27 unsigned int cpu = 0; 28 29 do { 30 ret = getopt_long(argc, argv, "d:e:", info_opts, NULL); 31 if (ret == -1) 32 break; 33 switch (ret) { 34 case '?': 35 param = '?'; 36 cont = 0; 37 break; 38 case 'd': 39 if (param) { 40 param = -1; 41 cont = 0; 42 break; 43 } 44 param = ret; 45 idlestate = atoi(optarg); 46 break; 47 case 'e': 48 if (param) { 49 param = -1; 50 cont = 0; 51 break; 52 } 53 param = ret; 54 idlestate = atoi(optarg); 55 break; 56 case -1: 57 cont = 0; 58 break; 59 } 60 } while (cont); 61 62 switch (param) { 63 case -1: 64 printf(_("You can't specify more than one " 65 "output-specific argument\n")); 66 exit(EXIT_FAILURE); 67 case '?': 68 printf(_("invalid or unknown argument\n")); 69 exit(EXIT_FAILURE); 70 } 71 72 /* Default is: set all CPUs */ 73 if (bitmask_isallclear(cpus_chosen)) 74 bitmask_setall(cpus_chosen); 75 76 for (cpu = bitmask_first(cpus_chosen); 77 cpu <= bitmask_last(cpus_chosen); cpu++) { 78 79 if (!bitmask_isbitset(cpus_chosen, cpu)) 80 continue; 81 82 switch (param) { 83 84 case 'd': 85 ret = sysfs_idlestate_disable(cpu, idlestate, 1); 86 if (ret == 0) 87 printf(_("Idlestate %u disabled on CPU %u\n"), idlestate, cpu); 88 else if (ret == -1) 89 printf(_("Idlestate %u not available on CPU %u\n"), 90 idlestate, cpu); 91 else if (ret == -2) 92 printf(_("Idlestate disabling not supported by kernel\n")); 93 else 94 printf(_("Idlestate %u not disabled on CPU %u\n"), 95 idlestate, cpu); 96 break; 97 case 'e': 98 ret = sysfs_idlestate_disable(cpu, idlestate, 0); 99 if (ret == 0) 100 printf(_("Idlestate %u enabled on CPU %u\n"), idlestate, cpu); 101 else if (ret == -1) 102 printf(_("Idlestate %u not available on CPU %u\n"), 103 idlestate, cpu); 104 else if (ret == -2) 105 printf(_("Idlestate enabling not supported by kernel\n")); 106 else 107 printf(_("Idlestate %u not enabled on CPU %u\n"), 108 idlestate, cpu); 109 break; 110 default: 111 /* Not reachable with proper args checking */ 112 printf(_("Invalid or unknown argument\n")); 113 exit(EXIT_FAILURE); 114 break; 115 } 116 } 117 return EXIT_SUCCESS; 118}