treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321
[linux-2.6-block.git] / drivers / misc / vmw_vmci / vmci_handle_array.h
CommitLineData
685a6bf8 1/* SPDX-License-Identifier: GPL-2.0-only */
b484b26c
GZ
2/*
3 * VMware VMCI Driver
4 *
5 * Copyright (C) 2012 VMware, Inc. All rights reserved.
b484b26c
GZ
6 */
7
8#ifndef _VMCI_HANDLE_ARRAY_H_
9#define _VMCI_HANDLE_ARRAY_H_
10
11#include <linux/vmw_vmci_defs.h>
12#include <linux/types.h>
13
14#define VMCI_HANDLE_ARRAY_DEFAULT_SIZE 4
15#define VMCI_ARR_CAP_MULT 2 /* Array capacity multiplier */
16
17struct vmci_handle_arr {
18 size_t capacity;
19 size_t size;
20 struct vmci_handle entries[];
21};
22
23struct vmci_handle_arr *vmci_handle_arr_create(size_t capacity);
24void vmci_handle_arr_destroy(struct vmci_handle_arr *array);
25void vmci_handle_arr_append_entry(struct vmci_handle_arr **array_ptr,
26 struct vmci_handle handle);
27struct vmci_handle vmci_handle_arr_remove_entry(struct vmci_handle_arr *array,
28 struct vmci_handle
29 entry_handle);
30struct vmci_handle vmci_handle_arr_remove_tail(struct vmci_handle_arr *array);
31struct vmci_handle
32vmci_handle_arr_get_entry(const struct vmci_handle_arr *array, size_t index);
33bool vmci_handle_arr_has_entry(const struct vmci_handle_arr *array,
34 struct vmci_handle entry_handle);
35struct vmci_handle *vmci_handle_arr_get_handles(struct vmci_handle_arr *array);
36
37static inline size_t vmci_handle_arr_get_size(
38 const struct vmci_handle_arr *array)
39{
40 return array->size;
41}
42
43
44#endif /* _VMCI_HANDLE_ARRAY_H_ */