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 386d6dfb4fSAndy King /* 396d6dfb4fSAndy King * Needed by other components of this module. It's okay to have one global 406d6dfb4fSAndy King * instance of this because there can only ever be one VMCI device. Our 416d6dfb4fSAndy King * virtual hardware enforces this. 426d6dfb4fSAndy King */ 436d6dfb4fSAndy King extern struct pci_dev *vmci_pdev; 446d6dfb4fSAndy King 45197dbaaaSGeorge Zhang u32 vmci_get_context_id(void); 46197dbaaaSGeorge Zhang int vmci_send_datagram(struct vmci_datagram *dg); 47197dbaaaSGeorge Zhang 48197dbaaaSGeorge Zhang int vmci_host_init(void); 49197dbaaaSGeorge Zhang void vmci_host_exit(void); 50197dbaaaSGeorge Zhang bool vmci_host_code_active(void); 51197dbaaaSGeorge Zhang 52197dbaaaSGeorge Zhang int vmci_guest_init(void); 53197dbaaaSGeorge Zhang void vmci_guest_exit(void); 54197dbaaaSGeorge Zhang bool vmci_guest_code_active(void); 55197dbaaaSGeorge Zhang u32 vmci_get_vm_context_id(void); 56197dbaaaSGeorge Zhang 57f2db7361SVishnu DASA bool vmci_use_ppn64(void); 58f2db7361SVishnu DASA 59197dbaaaSGeorge Zhang #endif /* _VMCI_DRIVER_H_ */ 60