1 /* 2 * 3 * Copyright 2021, The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package android.os; 19 20 import android.os.IHintSession; 21 import android.hardware.power.ChannelConfig; 22 import android.hardware.power.SessionConfig; 23 import android.hardware.power.SessionTag; 24 25 /** {@hide} */ 26 interface IHintManager { 27 /** 28 * Creates a {@link Session} for the given set of threads and associates to a binder token. 29 * Returns a config if creation is not supported, and HMS had to use the 30 * legacy creation method. 31 * 32 * Throws UnsupportedOperationException if ADPF is not supported, and IllegalStateException 33 * if creation is supported but fails. 34 */ createHintSessionWithConfig(in IBinder token, in int[] threadIds, in long durationNanos, in SessionTag tag, out @nullable SessionConfig config)35 IHintSession createHintSessionWithConfig(in IBinder token, in int[] threadIds, 36 in long durationNanos, in SessionTag tag, out @nullable SessionConfig config); 37 38 /** 39 * Get preferred rate limit in nanoseconds. 40 */ getHintSessionPreferredRate()41 long getHintSessionPreferredRate(); 42 setHintSessionThreads(in IHintSession hintSession, in int[] tids)43 void setHintSessionThreads(in IHintSession hintSession, in int[] tids); getHintSessionThreadIds(in IHintSession hintSession)44 int[] getHintSessionThreadIds(in IHintSession hintSession); 45 46 /** 47 * Returns FMQ channel information for the caller, which it associates to a binder token. 48 * 49 * Throws IllegalStateException if FMQ channel creation fails. 50 */ getSessionChannel(in IBinder token)51 ChannelConfig getSessionChannel(in IBinder token); closeSessionChannel()52 oneway void closeSessionChannel(); 53 } 54