52 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * VMware VMCI Driver4 *5 * Copyright (C) 2012 VMware, Inc. All rights reserved.6 */7 8#ifndef _VMCI_RESOURCE_H_9#define _VMCI_RESOURCE_H_10 11#include <linux/vmw_vmci_defs.h>12#include <linux/types.h>13 14#include "vmci_context.h"15 16 17enum vmci_resource_type {18 VMCI_RESOURCE_TYPE_ANY,19 VMCI_RESOURCE_TYPE_API,20 VMCI_RESOURCE_TYPE_GROUP,21 VMCI_RESOURCE_TYPE_DATAGRAM,22 VMCI_RESOURCE_TYPE_DOORBELL,23 VMCI_RESOURCE_TYPE_QPAIR_GUEST,24 VMCI_RESOURCE_TYPE_QPAIR_HOST25};26 27struct vmci_resource {28 struct vmci_handle handle;29 enum vmci_resource_type type;30 struct hlist_node node;31 struct kref kref;32 struct completion done;33};34 35 36int vmci_resource_add(struct vmci_resource *resource,37 enum vmci_resource_type resource_type,38 struct vmci_handle handle);39 40void vmci_resource_remove(struct vmci_resource *resource);41 42struct vmci_resource *43vmci_resource_by_handle(struct vmci_handle resource_handle,44 enum vmci_resource_type resource_type);45 46struct vmci_resource *vmci_resource_get(struct vmci_resource *resource);47int vmci_resource_put(struct vmci_resource *resource);48 49struct vmci_handle vmci_resource_handle(struct vmci_resource *resource);50 51#endif /* _VMCI_RESOURCE_H_ */52