#include #include #include #include #include #include #include extern int sys_ioprio_set(int); extern int sys_ioprio_get(void); #if defined(__i386__) #define __NR_ioprio_set 295 #define __NR_ioprio_get 296 #elif defined(__ppc__) #define __NR_ioprio_set 278 #define __NR_ioprio_get 279 #elif defined(__x86_64__) #define __NR_ioprio_set 254 #define __NR_ioprio_get 255 #elif defined(__ia64__) #define __NR_ioprio_set 1274 #define __NR_ioprio_get 1275 #else #error "Unsupported arch" #endif _syscall1(int, ioprio_set, int, ioprio); _syscall0(int, ioprio_get); int main(int argc, char *argv[]) { int ioprio = 2, set = 0; int c; while ((c = getopt(argc, argv, "+n:")) != EOF) { switch (c) { case 'n': ioprio = strtol(optarg, NULL, 10); set = 1; break; } } if (!set) { int ioprio = ioprio_get(); if (ioprio == -1) perror("ioprio_get"); else 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; }