SchedulingPolicyService.cpp revision 236461444e6a29de42ab3d49e3308fd75306cd9d
1236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland/* 2236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * Copyright (C) 2017 The Android Open Source Project 3236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * 4236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * Licensed under the Apache License, Version 2.0 (the "License"); 5236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * you may not use this file except in compliance with the License. 6236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * You may obtain a copy of the License at 7236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * 8236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * http://www.apache.org/licenses/LICENSE-2.0 9236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * 10236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * Unless required by applicable law or agreed to in writing, software 11236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * distributed under the License is distributed on an "AS IS" BASIS, 12236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * See the License for the specific language governing permissions and 14236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland * limitations under the License. 15236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland */ 16236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland#define LOG_TAG "schedulerservicehidl" 17236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland 18236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland#include "SchedulingPolicyService.h" 19236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland 20236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland#include <private/android_filesystem_config.h> // for AID_CAMERASERVER 21236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland 22236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland#include <log/log.h> 23236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland#include <hwbinder/IPCThreadState.h> 24236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland#include <mediautils/SchedulingPolicyService.h> 25236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland 26236461444e6a29de42ab3d49e3308fd75306cd9dSteven Morelandnamespace android { 27236461444e6a29de42ab3d49e3308fd75306cd9dSteven Morelandnamespace frameworks { 28236461444e6a29de42ab3d49e3308fd75306cd9dSteven Morelandnamespace schedulerservice { 29236461444e6a29de42ab3d49e3308fd75306cd9dSteven Morelandnamespace V1_0 { 30236461444e6a29de42ab3d49e3308fd75306cd9dSteven Morelandnamespace implementation { 31236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland 32236461444e6a29de42ab3d49e3308fd75306cd9dSteven MorelandReturn<bool> SchedulingPolicyService::requestPriority(int32_t pid, int32_t tid, int32_t priority) { 33236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland using ::android::hardware::IPCThreadState; 34236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland 35236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland if (priority < static_cast<int32_t>(Priority::MIN) || 36236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland priority > static_cast<int32_t>(Priority::MAX)) { 37236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland return false; 38236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland } 39236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland 40236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland if (IPCThreadState::self()->getCallingUid() != AID_CAMERASERVER) { 41236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland return false; 42236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland } 43236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland 44236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland // this should always be allowed since we are in system_server. 45236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland int value = ::android::requestPriority(pid, tid, priority, false /* isForApp */); 46236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland return value == 0 /* success */; 47236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland} 48236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland 49236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland} // namespace implementation 50236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland} // namespace V1_0 51236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland} // namespace schedulerservice 52236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland} // namespace frameworks 53236461444e6a29de42ab3d49e3308fd75306cd9dSteven Moreland} // namespace android 54