NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_mmap.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES, ALL RIGHTS RESERVED.
3  *
4  * This software product is a proprietary product of NVIDIA CORPORATION &
5  * AFFILIATES (the "Company") and all right, title, and interest in and to the
6  * software product, including all associated intellectual property rights, are
7  * and shall remain exclusively with the Company.
8  *
9  * This software product is governed by the End User License Agreement
10  * provided with the software product.
11  *
12  */
13 
25 #ifndef DOCA_MMAP_H_
26 #define DOCA_MMAP_H_
27 
28 #include <stddef.h>
29 #include <stdint.h>
30 
31 #include <doca_compat.h>
32 #include <doca_error.h>
33 #include <doca_types.h>
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 struct doca_dev;
40 struct doca_devinfo;
41 
42 /*******************************************************************************
43  * DOCA Memory Map
44  ******************************************************************************/
45 
73 struct doca_mmap;
74 struct doca_dpa;
75 
80 typedef uint32_t doca_dpa_dev_mmap_t;
81 
102 doca_error_t doca_mmap_create(struct doca_mmap **mmap);
103 
123 
151 doca_error_t doca_mmap_start(struct doca_mmap *mmap);
152 
172 doca_error_t doca_mmap_stop(struct doca_mmap *mmap);
173 
198 doca_error_t doca_mmap_add_dev(struct doca_mmap *mmap, struct doca_dev *dev);
199 
221 doca_error_t doca_mmap_rm_dev(struct doca_mmap *mmap, struct doca_dev *dev);
222 
233 typedef void(doca_mmap_memrange_free_cb_t)(void *addr, size_t len, void *cookie);
234 
277  const struct doca_dev *dev,
278  const void **export_desc,
279  size_t *export_desc_len);
280 
321  const struct doca_dev *dev,
322  const void **export_desc,
323  size_t *export_desc_len);
324 
350  const struct doca_dev *dev,
352 
394  const void *export_desc,
395  size_t export_desc_len,
396  struct doca_dev *dev,
397  struct doca_mmap **mmap);
398 
399 /*******************************************************************************
400  * DOCA Memory Map properties
401  ******************************************************************************/
402 
426 doca_error_t doca_mmap_set_memrange(struct doca_mmap *mmap, void *addr, size_t len);
427 
457  int dmabuf_fd,
458  void *addr,
459  size_t dmabuf_offset,
460  size_t len);
461 
489 doca_error_t doca_mmap_set_dpa_memrange(struct doca_mmap *mmap, struct doca_dpa *dpa, uint64_t dpa_addr, size_t len);
490 
508 doca_error_t doca_mmap_get_memrange(const struct doca_mmap *mmap, void **addr, size_t *len);
509 
531 
548 doca_error_t doca_mmap_get_user_data(const struct doca_mmap *mmap, union doca_data *user_data);
549 
564 doca_error_t doca_mmap_get_max_num_devices(const struct doca_mmap *mmap, uint32_t *max_num_devices);
565 
580 doca_error_t doca_mmap_get_num_bufs(const struct doca_mmap *mmap, uint32_t *num_bufs);
581 
596 doca_error_t doca_mmap_get_exported(const struct doca_mmap *mmap, uint8_t *exported);
597 
612 doca_error_t doca_mmap_get_from_export(const struct doca_mmap *mmap, uint8_t *from_export);
613 
629 doca_error_t doca_mmap_set_max_num_devices(struct doca_mmap *mmap, uint32_t max_num_devices);
630 
649 doca_error_t doca_mmap_set_permissions(struct doca_mmap *mmap, uint32_t access_mask);
650 
666 doca_error_t doca_mmap_set_user_data(struct doca_mmap *mmap, union doca_data user_data);
667 
687 doca_error_t doca_mmap_cap_is_export_pci_supported(const struct doca_devinfo *devinfo, uint8_t *mmap_export);
688 
711  uint8_t *from_export);
712 
735 
736 #ifdef __cplusplus
737 }
738 #endif
739 
742 #endif /* DOCA_MMAP_H_ */
uintptr_t addr
doca_dpa_dev_mmap_t mmap
uint64_t len
uint64_t cookie
uint32_t dpa_mmap_handle
static void free_cb(void *addr, size_t len, void *opaque)
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
Definition: doca_compat.h:103
#define DOCA_STABLE
To set a Symbol (or specifically a function) as stable API, i.e. it won't be changed.
Definition: doca_compat.h:96
enum doca_error doca_error_t
DOCA API return codes.
DOCA_STABLE doca_error_t doca_mmap_cap_is_export_pci_supported(const struct doca_devinfo *devinfo, uint8_t *mmap_export)
Get the mmap export to PCI capability of a device.
DOCA_STABLE doca_error_t doca_mmap_get_user_data(const struct doca_mmap *mmap, union doca_data *user_data)
Get the user_data of a DOCA Memory Map.
uint32_t doca_dpa_dev_mmap_t
Handle on the DPA for a doca_mmap instance.
Definition: doca_mmap.h:74
DOCA_STABLE doca_error_t doca_mmap_set_memrange(struct doca_mmap *mmap, void *addr, size_t len)
Set the memory range of DOCA memory map.
DOCA_STABLE doca_error_t doca_mmap_set_user_data(struct doca_mmap *mmap, union doca_data user_data)
Set user_data for a DOCA Memory Map.
DOCA_STABLE doca_error_t doca_mmap_rm_dev(struct doca_mmap *mmap, struct doca_dev *dev)
Deregister given device from DOCA memory map.
DOCA_STABLE doca_error_t doca_mmap_set_max_num_devices(struct doca_mmap *mmap, uint32_t max_num_devices)
Set a new max number of devices to add to a DOCA Memory Map.
DOCA_STABLE doca_error_t doca_mmap_destroy(struct doca_mmap *mmap)
Destroy DOCA Memory Map structure.
void() doca_mmap_memrange_free_cb_t(void *addr, size_t len, void *cookie)
Function to be called for each populated memory range on memory map destroy.
Definition: doca_mmap.h:233
DOCA_STABLE doca_error_t doca_mmap_get_max_num_devices(const struct doca_mmap *mmap, uint32_t *max_num_devices)
Get the max number of devices to add to a DOCA Memory Map.
DOCA_STABLE doca_error_t doca_mmap_create(struct doca_mmap **mmap)
Allocates zero size memory map object with default/unset attributes.
DOCA_STABLE doca_error_t doca_mmap_create_from_export(const union doca_data *user_data, const void *export_desc, size_t export_desc_len, struct doca_dev *dev, struct doca_mmap **mmap)
Creates a memory map object representing memory ranges in remote system memory space.
DOCA_STABLE doca_error_t doca_mmap_set_permissions(struct doca_mmap *mmap, uint32_t access_mask)
Set access flags of the registered memory.
DOCA_STABLE doca_error_t doca_mmap_export_pci(struct doca_mmap *mmap, const struct doca_dev *dev, const void **export_desc, size_t *export_desc_len)
Compose memory map representation for later import with doca_mmap_create_from_export() for one of the...
DOCA_STABLE doca_error_t doca_mmap_start(struct doca_mmap *mmap)
Start DOCA Memory Map.
DOCA_STABLE doca_error_t doca_mmap_set_free_cb(struct doca_mmap *mmap, doca_mmap_memrange_free_cb_t *free_cb, void *opaque)
Set callback that will free the memory range when destroying DOCA memory map.
DOCA_EXPERIMENTAL doca_error_t doca_mmap_dev_get_dpa_handle(struct doca_mmap *mmap, const struct doca_dev *dev, doca_dpa_dev_mmap_t *dpa_mmap_handle)
Extract mmap handle associated with the given DOCA device, for the DPA to operate on.
DOCA_EXPERIMENTAL doca_error_t doca_mmap_enable_thread_safety(struct doca_mmap *mmap)
Enable thread safety for doca_mmap.
DOCA_STABLE doca_error_t doca_mmap_cap_is_create_from_export_pci_supported(const struct doca_devinfo *devinfo, uint8_t *from_export)
Get the mmap create from export PCI capability of a device.
DOCA_STABLE doca_error_t doca_mmap_get_memrange(const struct doca_mmap *mmap, void **addr, size_t *len)
Get the memory range of DOCA memory map.
DOCA_STABLE doca_error_t doca_mmap_get_from_export(const struct doca_mmap *mmap, uint8_t *from_export)
Get the flag indicating if a DOCA Memory Map had been created from an export.
DOCA_STABLE doca_error_t doca_mmap_get_num_bufs(const struct doca_mmap *mmap, uint32_t *num_bufs)
Get the Total number of struct doca_buf objects pointing to the memory in a DOCA Memory Map.
DOCA_STABLE doca_error_t doca_mmap_stop(struct doca_mmap *mmap)
Stop DOCA Memory Map.
DOCA_STABLE doca_error_t doca_mmap_get_exported(const struct doca_mmap *mmap, uint8_t *exported)
Get the flag indicating if a DOCA Memory Map had been exported.
DOCA_EXPERIMENTAL doca_error_t doca_mmap_set_dpa_memrange(struct doca_mmap *mmap, struct doca_dpa *dpa, uint64_t dpa_addr, size_t len)
Set the memory range of DOCA memory map to be a DPA heap memory.
DOCA_STABLE doca_error_t doca_mmap_add_dev(struct doca_mmap *mmap, struct doca_dev *dev)
Register DOCA memory map on a given device.
DOCA_STABLE doca_error_t doca_mmap_export_rdma(struct doca_mmap *mmap, const struct doca_dev *dev, const void **export_desc, size_t *export_desc_len)
Compose memory map representation for later import with doca_mmap_create_from_export() for one of the...
DOCA_STABLE doca_error_t doca_mmap_set_dmabuf_memrange(struct doca_mmap *mmap, int dmabuf_fd, void *addr, size_t dmabuf_offset, size_t len)
Set the memory range of DOCA memory map using dmabuf.
Convenience type for representing opaque data.
Definition: doca_types.h:56