iosched_policy.c revision 10d469bff9031e857c7a290dae7d6ccf7b3a18f8
110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat/* libs/cutils/iosched_policy.c 310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** 410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** Copyright 2007, The Android Open Source Project 510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** 610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** Licensed under the Apache License, Version 2.0 (the "License"); 710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** you may not use this file except in compliance with the License. 810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** You may obtain a copy of the License at 910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** 1010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** http://www.apache.org/licenses/LICENSE-2.0 1110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** 1210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** Unless required by applicable law or agreed to in writing, software 1310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** distributed under the License is distributed on an "AS IS" BASIS, 1410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** See the License for the specific language governing permissions and 1610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat** limitations under the License. 1710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat*/ 1810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 1910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <stdio.h> 2010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <stdlib.h> 2110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <unistd.h> 2210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <string.h> 2310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <errno.h> 2410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <fcntl.h> 2510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <linux/unistd.h> 2610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 2710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#ifdef HAVE_SCHED_H 2810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 2910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#include <cutils/iosched_policy.h> 3010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 3110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehatextern int ioprio_set(int which, int who, int ioprio); 3210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 3310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehatenum { 3410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat WHO_PROCESS = 1, 3510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat WHO_PGRP, 3610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat WHO_USER, 3710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat}; 3810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 3910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#define CLASS_SHIFT 13 4010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#define IOPRIO_NORM 4 4110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 4210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehatint android_set_ioprio(int pid, IoSchedClass clazz, int ioprio) { 4310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat if (ioprio_set(WHO_PROCESS, pid, ioprio | (clazz << CLASS_SHIFT))) { 4410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return -1; 4510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } 4610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return 0; 4710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat} 4810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 4910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehatint android_get_ioprio(int pid, IoSchedClass *clazz, int *ioprio) { 5010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat int rc; 5110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 5210d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat if ((rc = ioprio_get(WHO_PROCESS, pid)) < 0) { 5310d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return -1; 5410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat } 5510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 5610d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat *clazz = (rc >> CLASS_SHIFT); 5710d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat *ioprio = (rc & 0xff); 5810d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat return 0; 5910d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat} 6010d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat 6110d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat#endif /* HAVE_SCHED_H */ 62