ionice.c revision 10d469bff9031e857c7a290dae7d6ccf7b3a18f8
110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <stdio.h> 210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <stdlib.h> 310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <unistd.h> 410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <errno.h> 510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <cutils/iosched_policy.h> 710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehatstatic char *classes[] = {"none", "rt", "be", "idle", NULL}; 910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 1010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehatint ionice_main(int argc, char *argv[]) 1110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat{ 1210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat IoSchedClass clazz = IoSchedClass_NONE; 1310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat int ioprio = 0; 1410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat int pid; 1510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 1610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat if(argc != 2 && argc != 4) { 1710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat fprintf(stderr, "usage: ionice <pid> [none|rt|be|idle] [prio]\n"); 1810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return 1; 1910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } 2010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 2110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat if (!(pid = atoi(argv[1]))) { 2210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat fprintf(stderr, "Invalid pid specified\n"); 2310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return 1; 2410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } 2510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 2610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat if (argc == 2) { 2710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat if (android_get_ioprio(pid, &clazz, &ioprio)) { 2810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat fprintf(stderr, "Failed to read priority (%s)\n", strerror(errno)); 2910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return 1; 3010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } 3110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat fprintf(stdout, "Pid %d, class %s (%d), prio %d\n", pid, classes[clazz], clazz, ioprio); 3210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return 0; 3310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } 3410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 3510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat if (!strcmp(argv[2], "none")) { 3610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat clazz = IoSchedClass_NONE; 3710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } else if (!strcmp(argv[2], "rt")) { 3810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat clazz = IoSchedClass_RT; 3910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } else if (!strcmp(argv[2], "be")) { 4010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat clazz = IoSchedClass_BE; 4110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } else if (!strcmp(argv[2], "idle")) { 4210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat clazz = IoSchedClass_IDLE; 4310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } else { 4410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat fprintf(stderr, "Unsupported class '%s'\n", argv[2]); 4510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return 1; 4610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } 4710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 4810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat ioprio = atoi(argv[3]); 4910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 5010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat printf("Setting pid %d i/o class to %d, prio %d\n", pid, clazz, ioprio); 5110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat if (android_set_ioprio(pid, clazz, ioprio)) { 5210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat fprintf(stderr, "Failed to set priority (%s)\n", strerror(errno)); 5310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return 1; 5410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } 5510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 5610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return 0; 5710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat} 58