1197dbaaaSGeorge Zhang /*
2197dbaaaSGeorge Zhang  * VMware VMCI Driver
3197dbaaaSGeorge Zhang  *
4197dbaaaSGeorge Zhang  * Copyright (C) 2012 VMware, Inc. All rights reserved.
5197dbaaaSGeorge Zhang  *
6197dbaaaSGeorge Zhang  * This program is free software; you can redistribute it and/or modify it
7197dbaaaSGeorge Zhang  * under the terms of the GNU General Public License as published by the
8197dbaaaSGeorge Zhang  * Free Software Foundation version 2 and no later version.
9197dbaaaSGeorge Zhang  *
10197dbaaaSGeorge Zhang  * This program is distributed in the hope that it will be useful, but
11197dbaaaSGeorge Zhang  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12197dbaaaSGeorge Zhang  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13197dbaaaSGeorge Zhang  * for more details.
14197dbaaaSGeorge Zhang  */
15197dbaaaSGeorge Zhang 
16197dbaaaSGeorge Zhang #ifndef _VMCI_DRIVER_H_
17197dbaaaSGeorge Zhang #define _VMCI_DRIVER_H_
18197dbaaaSGeorge Zhang 
19197dbaaaSGeorge Zhang #include <linux/vmw_vmci_defs.h>
20197dbaaaSGeorge Zhang #include <linux/wait.h>
21197dbaaaSGeorge Zhang 
22197dbaaaSGeorge Zhang #include "vmci_queue_pair.h"
23197dbaaaSGeorge Zhang #include "vmci_context.h"
24197dbaaaSGeorge Zhang 
25197dbaaaSGeorge Zhang enum vmci_obj_type {
26197dbaaaSGeorge Zhang 	VMCIOBJ_VMX_VM = 10,
27197dbaaaSGeorge Zhang 	VMCIOBJ_CONTEXT,
28197dbaaaSGeorge Zhang 	VMCIOBJ_SOCKET,
29197dbaaaSGeorge Zhang 	VMCIOBJ_NOT_SET,
30197dbaaaSGeorge Zhang };
31197dbaaaSGeorge Zhang 
32197dbaaaSGeorge Zhang /* For storing VMCI structures in file handles. */
33197dbaaaSGeorge Zhang struct vmci_obj {
34197dbaaaSGeorge Zhang 	void *ptr;
35197dbaaaSGeorge Zhang 	enum vmci_obj_type type;
36197dbaaaSGeorge Zhang };
37197dbaaaSGeorge Zhang 
38197dbaaaSGeorge Zhang u32 vmci_get_context_id(void);
39197dbaaaSGeorge Zhang int vmci_send_datagram(struct vmci_datagram *dg);
40197dbaaaSGeorge Zhang 
41197dbaaaSGeorge Zhang int vmci_host_init(void);
42197dbaaaSGeorge Zhang void vmci_host_exit(void);
43197dbaaaSGeorge Zhang bool vmci_host_code_active(void);
44197dbaaaSGeorge Zhang 
45197dbaaaSGeorge Zhang int vmci_guest_init(void);
46197dbaaaSGeorge Zhang void vmci_guest_exit(void);
47197dbaaaSGeorge Zhang bool vmci_guest_code_active(void);
48197dbaaaSGeorge Zhang u32 vmci_get_vm_context_id(void);
49197dbaaaSGeorge Zhang 
50197dbaaaSGeorge Zhang #endif /* _VMCI_DRIVER_H_ */
51