18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * VMware VMCI Driver
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (C) 2012 VMware, Inc. All rights reserved.
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#ifndef _VMCI_DRIVER_H_
98c2ecf20Sopenharmony_ci#define _VMCI_DRIVER_H_
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#include <linux/vmw_vmci_defs.h>
128c2ecf20Sopenharmony_ci#include <linux/wait.h>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#include "vmci_queue_pair.h"
158c2ecf20Sopenharmony_ci#include "vmci_context.h"
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cienum vmci_obj_type {
188c2ecf20Sopenharmony_ci	VMCIOBJ_VMX_VM = 10,
198c2ecf20Sopenharmony_ci	VMCIOBJ_CONTEXT,
208c2ecf20Sopenharmony_ci	VMCIOBJ_SOCKET,
218c2ecf20Sopenharmony_ci	VMCIOBJ_NOT_SET,
228c2ecf20Sopenharmony_ci};
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci/* For storing VMCI structures in file handles. */
258c2ecf20Sopenharmony_cistruct vmci_obj {
268c2ecf20Sopenharmony_ci	void *ptr;
278c2ecf20Sopenharmony_ci	enum vmci_obj_type type;
288c2ecf20Sopenharmony_ci};
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci/*
318c2ecf20Sopenharmony_ci * Needed by other components of this module.  It's okay to have one global
328c2ecf20Sopenharmony_ci * instance of this because there can only ever be one VMCI device.  Our
338c2ecf20Sopenharmony_ci * virtual hardware enforces this.
348c2ecf20Sopenharmony_ci */
358c2ecf20Sopenharmony_ciextern struct pci_dev *vmci_pdev;
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ciu32 vmci_get_context_id(void);
388c2ecf20Sopenharmony_ciint vmci_send_datagram(struct vmci_datagram *dg);
398c2ecf20Sopenharmony_civoid vmci_call_vsock_callback(bool is_host);
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciint vmci_host_init(void);
428c2ecf20Sopenharmony_civoid vmci_host_exit(void);
438c2ecf20Sopenharmony_cibool vmci_host_code_active(void);
448c2ecf20Sopenharmony_ciint vmci_host_users(void);
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ciint vmci_guest_init(void);
478c2ecf20Sopenharmony_civoid vmci_guest_exit(void);
488c2ecf20Sopenharmony_cibool vmci_guest_code_active(void);
498c2ecf20Sopenharmony_ciu32 vmci_get_vm_context_id(void);
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_cibool vmci_use_ppn64(void);
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci#endif /* _VMCI_DRIVER_H_ */
54