#include #include #include #include #include #include #include extern int sys_ioprio_set(int); extern int sys_ioprio_get(void); #if X86 #define __NR_ioprio_set 274 #define __NR_ioprio_get 275 #elif PPC #define __NR_ioprio_set 255 #define __NR_ioprio_get 256 #elif X86-64 #define __NR_ioprio_set 237 #define __NR_ioprio_get 238 #else #error unkown arch #endif _syscall1(int, ioprio_set, int, ioprio); _syscall0(int, ioprio_get); int main(int argc, char *argv[]) { int ioprio = 2, set = 0, set_pid = 0; pid_t pid; int c; while ((c = getopt(argc, argv, "+n:+p:")) != EOF) { switch (c) { case 'n': ioprio = strtol(optarg, NULL, 10); set = 1; break; case 'p': pid = strtoul(optarg, NULL, 10); set_pid = 1; break; } } if (!set) printf("%d\n", ioprio_get()); else if (argv[optind]) { if (ioprio_set(ioprio) == -1) { perror("ioprio_set"); return 1; } execvp(argv[optind], &argv[optind]); } return 0; }