Commit | Line | Data |
---|---|---|
bc63dedb GZ |
1 | /* |
2 | * VMware VMCI Driver | |
3 | * | |
4 | * Copyright (C) 2012 VMware, Inc. All rights reserved. | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or modify it | |
7 | * under the terms of the GNU General Public License as published by the | |
8 | * Free Software Foundation version 2 and no later version. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, but | |
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
13 | * for more details. | |
14 | */ | |
15 | ||
16 | #ifndef _VMCI_RESOURCE_H_ | |
17 | #define _VMCI_RESOURCE_H_ | |
18 | ||
19 | #include <linux/vmw_vmci_defs.h> | |
20 | #include <linux/types.h> | |
21 | ||
22 | #include "vmci_context.h" | |
23 | ||
24 | ||
25 | enum vmci_resource_type { | |
26 | VMCI_RESOURCE_TYPE_ANY, | |
27 | VMCI_RESOURCE_TYPE_API, | |
28 | VMCI_RESOURCE_TYPE_GROUP, | |
29 | VMCI_RESOURCE_TYPE_DATAGRAM, | |
30 | VMCI_RESOURCE_TYPE_DOORBELL, | |
31 | VMCI_RESOURCE_TYPE_QPAIR_GUEST, | |
32 | VMCI_RESOURCE_TYPE_QPAIR_HOST | |
33 | }; | |
34 | ||
35 | struct vmci_resource { | |
36 | struct vmci_handle handle; | |
37 | enum vmci_resource_type type; | |
38 | struct hlist_node node; | |
39 | struct kref kref; | |
40 | struct completion done; | |
41 | }; | |
42 | ||
43 | ||
44 | int vmci_resource_add(struct vmci_resource *resource, | |
45 | enum vmci_resource_type resource_type, | |
46 | struct vmci_handle handle); | |
47 | ||
48 | void vmci_resource_remove(struct vmci_resource *resource); | |
49 | ||
50 | struct vmci_resource * | |
51 | vmci_resource_by_handle(struct vmci_handle resource_handle, | |
52 | enum vmci_resource_type resource_type); | |
53 | ||
54 | struct vmci_resource *vmci_resource_get(struct vmci_resource *resource); | |
55 | int vmci_resource_put(struct vmci_resource *resource); | |
56 | ||
57 | struct vmci_handle vmci_resource_handle(struct vmci_resource *resource); | |
58 | ||
59 | #endif /* _VMCI_RESOURCE_H_ */ |