1493dad966305a7fb555addd367532dd2af275a27San Mehat/* 2493dad966305a7fb555addd367532dd2af275a27San Mehat * Copyright (C) 2007 The Android Open Source Project 3493dad966305a7fb555addd367532dd2af275a27San Mehat * 4493dad966305a7fb555addd367532dd2af275a27San Mehat * Licensed under the Apache License, Version 2.0 (the "License"); 5493dad966305a7fb555addd367532dd2af275a27San Mehat * you may not use this file except in compliance with the License. 6493dad966305a7fb555addd367532dd2af275a27San Mehat * You may obtain a copy of the License at 7493dad966305a7fb555addd367532dd2af275a27San Mehat * 8493dad966305a7fb555addd367532dd2af275a27San Mehat * http://www.apache.org/licenses/LICENSE-2.0 9493dad966305a7fb555addd367532dd2af275a27San Mehat * 10493dad966305a7fb555addd367532dd2af275a27San Mehat * Unless required by applicable law or agreed to in writing, software 11493dad966305a7fb555addd367532dd2af275a27San Mehat * distributed under the License is distributed on an "AS IS" BASIS, 12493dad966305a7fb555addd367532dd2af275a27San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13493dad966305a7fb555addd367532dd2af275a27San Mehat * See the License for the specific language governing permissions and 14493dad966305a7fb555addd367532dd2af275a27San Mehat * limitations under the License. 15493dad966305a7fb555addd367532dd2af275a27San Mehat */ 16493dad966305a7fb555addd367532dd2af275a27San Mehat 17493dad966305a7fb555addd367532dd2af275a27San Mehat#ifndef __CUTILS_SCHED_POLICY_H 18493dad966305a7fb555addd367532dd2af275a27San Mehat#define __CUTILS_SCHED_POLICY_H 19493dad966305a7fb555addd367532dd2af275a27San Mehat 20493dad966305a7fb555addd367532dd2af275a27San Mehat#ifdef __cplusplus 21493dad966305a7fb555addd367532dd2af275a27San Mehatextern "C" { 22493dad966305a7fb555addd367532dd2af275a27San Mehat#endif 23493dad966305a7fb555addd367532dd2af275a27San Mehat 2469bfb1f099164ae7ba44b5d0f7ba7c47cbbafd4dGlenn Kasten/* Keep in sync with THREAD_GROUP_* in frameworks/base/core/java/android/os/Process.java */ 25493dad966305a7fb555addd367532dd2af275a27San Mehattypedef enum { 2669bfb1f099164ae7ba44b5d0f7ba7c47cbbafd4dGlenn Kasten SP_DEFAULT = -1, 27493dad966305a7fb555addd367532dd2af275a27San Mehat SP_BACKGROUND = 0, 28493dad966305a7fb555addd367532dd2af275a27San Mehat SP_FOREGROUND = 1, 2910ec3c7645bfdb70518dc1b21df40ad5478589e3Glenn Kasten SP_SYSTEM = 2, // can't be used with set_sched_policy() 3010ec3c7645bfdb70518dc1b21df40ad5478589e3Glenn Kasten SP_AUDIO_APP = 3, 3110ec3c7645bfdb70518dc1b21df40ad5478589e3Glenn Kasten SP_AUDIO_SYS = 4, 3286c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten SP_CNT, 3386c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten SP_MAX = SP_CNT - 1, 3469bfb1f099164ae7ba44b5d0f7ba7c47cbbafd4dGlenn Kasten SP_SYSTEM_DEFAULT = SP_FOREGROUND, 35493dad966305a7fb555addd367532dd2af275a27San Mehat} SchedPolicy; 36493dad966305a7fb555addd367532dd2af275a27San Mehat 3786c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten/* Assign thread tid to the cgroup associated with the specified policy. 3886c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten * If the thread is a thread group leader, that is it's gettid() == getpid(), 3986c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten * then the other threads in the same thread group are _not_ affected. 4069bfb1f099164ae7ba44b5d0f7ba7c47cbbafd4dGlenn Kasten * On platforms which support gettid(), zero tid means current thread. 4186c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten * Return value: 0 for success, or -errno for error. 4286c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten */ 43493dad966305a7fb555addd367532dd2af275a27San Mehatextern int set_sched_policy(int tid, SchedPolicy policy); 4486c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten 4586c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten/* Return the policy associated with the cgroup of thread tid via policy pointer. 4669bfb1f099164ae7ba44b5d0f7ba7c47cbbafd4dGlenn Kasten * On platforms which support gettid(), zero tid means current thread. 4786c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten * Return value: 0 for success, or -1 for error and set errno. 4886c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten */ 49c0dfca7ae1f6016461235552091c2cacacca82a2San Mehatextern int get_sched_policy(int tid, SchedPolicy *policy); 50493dad966305a7fb555addd367532dd2af275a27San Mehat 5186c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten/* Return a displayable string corresponding to policy. 5286c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten * Return value: non-NULL NUL-terminated name of unspecified length; 5386c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten * the caller is responsible for displaying the useful part of the string. 5486c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten */ 5586c7cc81891a69ace7044de667b0624c284ee82bGlenn Kastenextern const char *get_sched_policy_name(SchedPolicy policy); 5686c7cc81891a69ace7044de667b0624c284ee82bGlenn Kasten 57493dad966305a7fb555addd367532dd2af275a27San Mehat#ifdef __cplusplus 58493dad966305a7fb555addd367532dd2af275a27San Mehat} 59493dad966305a7fb555addd367532dd2af275a27San Mehat#endif 60493dad966305a7fb555addd367532dd2af275a27San Mehat 61493dad966305a7fb555addd367532dd2af275a27San Mehat#endif /* __CUTILS_SCHED_POLICY_H */ 62