blob: 4a182f2deb695b7b5ccbbb0f32bf487591ac456f [file] [log] [blame]
San Mehat10d469b2010-02-25 14:02:55 -08001#include <stdio.h>
2#include <stdlib.h>
3#include <unistd.h>
4#include <errno.h>
5
6#include <cutils/iosched_policy.h>
7
8static char *classes[] = {"none", "rt", "be", "idle", NULL};
9
10int ionice_main(int argc, char *argv[])
11{
12 IoSchedClass clazz = IoSchedClass_NONE;
13 int ioprio = 0;
14 int pid;
15
16 if(argc != 2 && argc != 4) {
17 fprintf(stderr, "usage: ionice <pid> [none|rt|be|idle] [prio]\n");
18 return 1;
19 }
20
21 if (!(pid = atoi(argv[1]))) {
22 fprintf(stderr, "Invalid pid specified\n");
23 return 1;
24 }
25
26 if (argc == 2) {
27 if (android_get_ioprio(pid, &clazz, &ioprio)) {
28 fprintf(stderr, "Failed to read priority (%s)\n", strerror(errno));
29 return 1;
30 }
31 fprintf(stdout, "Pid %d, class %s (%d), prio %d\n", pid, classes[clazz], clazz, ioprio);
32 return 0;
33 }
34
35 if (!strcmp(argv[2], "none")) {
36 clazz = IoSchedClass_NONE;
37 } else if (!strcmp(argv[2], "rt")) {
38 clazz = IoSchedClass_RT;
39 } else if (!strcmp(argv[2], "be")) {
40 clazz = IoSchedClass_BE;
41 } else if (!strcmp(argv[2], "idle")) {
42 clazz = IoSchedClass_IDLE;
43 } else {
44 fprintf(stderr, "Unsupported class '%s'\n", argv[2]);
45 return 1;
46 }
47
48 ioprio = atoi(argv[3]);
49
50 printf("Setting pid %d i/o class to %d, prio %d\n", pid, clazz, ioprio);
51 if (android_set_ioprio(pid, clazz, ioprio)) {
52 fprintf(stderr, "Failed to set priority (%s)\n", strerror(errno));
53 return 1;
54 }
55
56 return 0;
57}