linux/drivers/misc/vmw_vmci/vmci_resource.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * VMware VMCI Driver
   4 *
   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_HOST
  25};
  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