diff options
| author | San Mehat <san@google.com> | 2010-02-25 14:02:55 -0800 |
|---|---|---|
| committer | San Mehat <san@google.com> | 2010-02-25 14:02:55 -0800 |
| commit | 10d469bff9031e857c7a290dae7d6ccf7b3a18f8 (patch) | |
| tree | cfd47c56e88088785967417773a2380a81b9fb38 /libcutils | |
| parent | d969faa161310d0a3792766320daa3200b84bd74 (diff) | |
| download | system_core-10d469bff9031e857c7a290dae7d6ccf7b3a18f8.tar.gz system_core-10d469bff9031e857c7a290dae7d6ccf7b3a18f8.tar.bz2 system_core-10d469bff9031e857c7a290dae7d6ccf7b3a18f8.zip | |
system: Add support for getting/setting i/o priorities and include a userspace tool
Signed-off-by: San Mehat <san@google.com>
Diffstat (limited to 'libcutils')
| -rw-r--r-- | libcutils/Android.mk | 3 | ||||
| -rw-r--r-- | libcutils/iosched_policy.c | 61 |
2 files changed, 63 insertions, 1 deletions
diff --git a/libcutils/Android.mk b/libcutils/Android.mk index 93933e2c..4c45cc92 100644 --- a/libcutils/Android.mk +++ b/libcutils/Android.mk @@ -38,7 +38,8 @@ commonSources := \ process_name.c \ properties.c \ threads.c \ - sched_policy.c + sched_policy.c \ + iosched_policy.c commonHostSources := \ ashmem-host.c diff --git a/libcutils/iosched_policy.c b/libcutils/iosched_policy.c new file mode 100644 index 00000000..4004a2af --- /dev/null +++ b/libcutils/iosched_policy.c @@ -0,0 +1,61 @@ + +/* libs/cutils/iosched_policy.c +** +** Copyright 2007, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> +#include <fcntl.h> +#include <linux/unistd.h> + +#ifdef HAVE_SCHED_H + +#include <cutils/iosched_policy.h> + +extern int ioprio_set(int which, int who, int ioprio); + +enum { + WHO_PROCESS = 1, + WHO_PGRP, + WHO_USER, +}; + +#define CLASS_SHIFT 13 +#define IOPRIO_NORM 4 + +int android_set_ioprio(int pid, IoSchedClass clazz, int ioprio) { + if (ioprio_set(WHO_PROCESS, pid, ioprio | (clazz << CLASS_SHIFT))) { + return -1; + } + return 0; +} + +int android_get_ioprio(int pid, IoSchedClass *clazz, int *ioprio) { + int rc; + + if ((rc = ioprio_get(WHO_PROCESS, pid)) < 0) { + return -1; + } + + *clazz = (rc >> CLASS_SHIFT); + *ioprio = (rc & 0xff); + return 0; +} + +#endif /* HAVE_SCHED_H */ |
