Home | History | Annotate | Download | only in include
      1 #ifndef UFDT_NODE_POOL_H
      2 #define UFDT_NODE_POOL_H
      3 
      4 /*
      5  * Copyright (C) 2017 The Android Open Source Project
      6  *
      7  * Licensed under the Apache License, Version 2.0 (the "License");
      8  * you may not use this file except in compliance with the License.
      9  * You may obtain a copy of the License at
     10  *
     11  *      http://www.apache.org/licenses/LICENSE-2.0
     12  *
     13  * Unless required by applicable law or agreed to in writing, software
     14  * distributed under the License is distributed on an "AS IS" BASIS,
     15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16  * See the License for the specific language governing permissions and
     17  * limitations under the License.
     18  */
     19 
     20 struct ufdt_node_pool_block_header;
     21 
     22 struct ufdt_node_pool {
     23   /* A single linked list contains all blocks.
     24      Blocks with one or more unused entries are in front;
     25      blocks without unused entry are in rear. */
     26   struct ufdt_node_pool_block_header *first_block;
     27   struct ufdt_node_pool_block_header **last_block_ptr;
     28 };
     29 
     30 void ufdt_node_pool_construct(struct ufdt_node_pool *pool);
     31 void ufdt_node_pool_destruct(struct ufdt_node_pool *pool);
     32 
     33 void *ufdt_node_pool_alloc(struct ufdt_node_pool *pool);
     34 void ufdt_node_pool_free(struct ufdt_node_pool *pool, void *node);
     35 
     36 #endif
     37