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