diff options
author | George Zhang <georgezhang@vmware.com> | 2013-01-08 18:55:07 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-01-08 19:15:56 -0500 |
commit | bc63dedb7d46a7d690c6b6edf69136b88af06cc6 (patch) | |
tree | f8b1a1eece8bdd545ab8dbd5570977a641eb6196 /drivers/misc/vmw_vmci/vmci_resource.h | |
parent | 06164d2b72aa752ce4633184b3e0d97601017135 (diff) |
VMCI: resource object implementation.
VMCI resource tracks all used resources within the vmci code.
Signed-off-by: George Zhang <georgezhang@vmware.com>
Acked-by: Andy king <acking@vmware.com>
Acked-by: Dmitry Torokhov <dtor@vmware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/vmw_vmci/vmci_resource.h')
-rw-r--r-- | drivers/misc/vmw_vmci/vmci_resource.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/drivers/misc/vmw_vmci/vmci_resource.h b/drivers/misc/vmw_vmci/vmci_resource.h new file mode 100644 index 000000000000..9190cd298bee --- /dev/null +++ b/drivers/misc/vmw_vmci/vmci_resource.h | |||
@@ -0,0 +1,59 @@ | |||
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_ */ | ||