id-pool: Re-factor recirculation id allocator into standalone id pool.
[cascardo/ovs.git] / lib / id-pool.h
1 /*
2  * Copyright (c) 2014 Nicira, Inc.
3  * Copyright (c) 2014 Netronome.
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 #ifndef ID_POOL_H
19 #define ID_POOL_H
20
21 #include <stddef.h>
22 #include <stdint.h>
23
24 struct id_pool;
25
26 struct id_pool *id_pool_create(uint32_t base, uint32_t n_ids);
27 void id_pool_destroy(struct id_pool *);
28 uint32_t id_pool_alloc_id(struct id_pool *);
29 void id_pool_free_id(struct id_pool *, uint32_t id);
30 void id_pool_add(struct id_pool *, uint32_t id);
31
32 /*
33  * ID pool.
34  * ========
35  *
36  * Pool of unique 32bit ids.
37  *
38  *
39  * Thread-safety
40  * =============
41  *
42  * APIs are not thread safe.
43  */
44 #endif  /* id-pool.h */