13079100878a2595be644d866e67c12a9de620fd5Martijn Coenen/*
23079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * Copyright (C) 2016 The Android Open Source Project
33079100878a2595be644d866e67c12a9de620fd5Martijn Coenen *
43079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * Licensed under the Apache License, Version 2.0 (the "License");
53079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * you may not use this file except in compliance with the License.
63079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * You may obtain a copy of the License at
73079100878a2595be644d866e67c12a9de620fd5Martijn Coenen *
83079100878a2595be644d866e67c12a9de620fd5Martijn Coenen *      http://www.apache.org/licenses/LICENSE-2.0
93079100878a2595be644d866e67c12a9de620fd5Martijn Coenen *
103079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * Unless required by applicable law or agreed to in writing, software
113079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * distributed under the License is distributed on an "AS IS" BASIS,
123079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * See the License for the specific language governing permissions and
143079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * limitations under the License.
153079100878a2595be644d866e67c12a9de620fd5Martijn Coenen */
163079100878a2595be644d866e67c12a9de620fd5Martijn Coenen
1723bb9993014e064f9c720d889269764f4d4ec7a5Steven Morelandpackage android.hidl.allocator@1.0;
183079100878a2595be644d866e67c12a9de620fd5Martijn Coenen
193079100878a2595be644d866e67c12a9de620fd5Martijn Coenen/**
203079100878a2595be644d866e67c12a9de620fd5Martijn Coenen * Interface which allocates the required memory.
213079100878a2595be644d866e67c12a9de620fd5Martijn Coenen */
223079100878a2595be644d866e67c12a9de620fd5Martijn Coeneninterface IAllocator {
233079100878a2595be644d866e67c12a9de620fd5Martijn Coenen
243079100878a2595be644d866e67c12a9de620fd5Martijn Coenen    /**
253079100878a2595be644d866e67c12a9de620fd5Martijn Coenen     * Return memory must have instance name corresponding to this type of memory.
263079100878a2595be644d866e67c12a9de620fd5Martijn Coenen     *
273079100878a2595be644d866e67c12a9de620fd5Martijn Coenen     * @param size Size of memory to allocate in bytes.
283079100878a2595be644d866e67c12a9de620fd5Martijn Coenen     * @return success Whether allocation succeeded.
293079100878a2595be644d866e67c12a9de620fd5Martijn Coenen     * @return memory Unmapped memory object.
303079100878a2595be644d866e67c12a9de620fd5Martijn Coenen     */
313079100878a2595be644d866e67c12a9de620fd5Martijn Coenen    allocate(uint64_t size) generates (bool success, memory mem);
32eca68d224d97a549e34598237649a0b743dced7dSteven Moreland
33eca68d224d97a549e34598237649a0b743dced7dSteven Moreland    /**
34eca68d224d97a549e34598237649a0b743dced7dSteven Moreland     * Return memory must have instance name corresponding to this type of memory.
35eca68d224d97a549e34598237649a0b743dced7dSteven Moreland     *
36eca68d224d97a549e34598237649a0b743dced7dSteven Moreland     * @param size Size of memory to allocate in bytes.
37eca68d224d97a549e34598237649a0b743dced7dSteven Moreland     * @param count Number of memory instances to allocate.
38eca68d224d97a549e34598237649a0b743dced7dSteven Moreland     * @return success Whether allocation succeeded (returns false if any allocation failed).
39eca68d224d97a549e34598237649a0b743dced7dSteven Moreland     * @return batch Unmapped memory objects.
40eca68d224d97a549e34598237649a0b743dced7dSteven Moreland     */
41eca68d224d97a549e34598237649a0b743dced7dSteven Moreland    batchAllocate(uint64_t size, uint64_t count) generates (bool success, vec<memory> batch);
423079100878a2595be644d866e67c12a9de620fd5Martijn Coenen};