]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/blame - include/linux/vmw_vmci_api.h
Merge tag 'nfs-for-5.2-4' of git://git.linux-nfs.org/projects/anna/linux-nfs
[mirror_ubuntu-eoan-kernel.git] / include / linux / vmw_vmci_api.h
CommitLineData
685a6bf8 1/* SPDX-License-Identifier: GPL-2.0-only */
20259849
GZ
2/*
3 * VMware VMCI Driver
4 *
5 * Copyright (C) 2012 VMware, Inc. All rights reserved.
20259849
GZ
6 */
7
8#ifndef __VMW_VMCI_API_H__
9#define __VMW_VMCI_API_H__
10
11#include <linux/uidgid.h>
12#include <linux/vmw_vmci_defs.h>
13
14#undef VMCI_KERNEL_API_VERSION
15#define VMCI_KERNEL_API_VERSION_1 1
16#define VMCI_KERNEL_API_VERSION_2 2
17#define VMCI_KERNEL_API_VERSION VMCI_KERNEL_API_VERSION_2
18
d838df2e 19struct msghdr;
20259849
GZ
20typedef void (vmci_device_shutdown_fn) (void *device_registration,
21 void *user_data);
22
23int vmci_datagram_create_handle(u32 resource_id, u32 flags,
24 vmci_datagram_recv_cb recv_cb,
25 void *client_data,
26 struct vmci_handle *out_handle);
27int vmci_datagram_create_handle_priv(u32 resource_id, u32 flags, u32 priv_flags,
28 vmci_datagram_recv_cb recv_cb,
29 void *client_data,
30 struct vmci_handle *out_handle);
31int vmci_datagram_destroy_handle(struct vmci_handle handle);
32int vmci_datagram_send(struct vmci_datagram *msg);
33int vmci_doorbell_create(struct vmci_handle *handle, u32 flags,
34 u32 priv_flags,
35 vmci_callback notify_cb, void *client_data);
36int vmci_doorbell_destroy(struct vmci_handle handle);
37int vmci_doorbell_notify(struct vmci_handle handle, u32 priv_flags);
38u32 vmci_get_context_id(void);
39bool vmci_is_context_owner(u32 context_id, kuid_t uid);
40
41int vmci_event_subscribe(u32 event,
42 vmci_event_cb callback, void *callback_data,
43 u32 *subid);
44int vmci_event_unsubscribe(u32 subid);
45u32 vmci_context_get_priv_flags(u32 context_id);
46int vmci_qpair_alloc(struct vmci_qp **qpair,
47 struct vmci_handle *handle,
48 u64 produce_qsize,
49 u64 consume_qsize,
50 u32 peer, u32 flags, u32 priv_flags);
51int vmci_qpair_detach(struct vmci_qp **qpair);
52int vmci_qpair_get_produce_indexes(const struct vmci_qp *qpair,
53 u64 *producer_tail,
54 u64 *consumer_head);
55int vmci_qpair_get_consume_indexes(const struct vmci_qp *qpair,
56 u64 *consumer_tail,
57 u64 *producer_head);
58s64 vmci_qpair_produce_free_space(const struct vmci_qp *qpair);
59s64 vmci_qpair_produce_buf_ready(const struct vmci_qp *qpair);
60s64 vmci_qpair_consume_free_space(const struct vmci_qp *qpair);
61s64 vmci_qpair_consume_buf_ready(const struct vmci_qp *qpair);
62ssize_t vmci_qpair_enqueue(struct vmci_qp *qpair,
63 const void *buf, size_t buf_size, int mode);
64ssize_t vmci_qpair_dequeue(struct vmci_qp *qpair,
65 void *buf, size_t buf_size, int mode);
66ssize_t vmci_qpair_peek(struct vmci_qp *qpair, void *buf, size_t buf_size,
67 int mode);
68ssize_t vmci_qpair_enquev(struct vmci_qp *qpair,
4c946d9c 69 struct msghdr *msg, size_t iov_size, int mode);
20259849 70ssize_t vmci_qpair_dequev(struct vmci_qp *qpair,
d838df2e
AV
71 struct msghdr *msg, size_t iov_size, int mode);
72ssize_t vmci_qpair_peekv(struct vmci_qp *qpair, struct msghdr *msg, size_t iov_size,
20259849
GZ
73 int mode);
74
75#endif /* !__VMW_VMCI_API_H__ */