mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2025-01-12 01:45:25 +00:00
71 lines
1.7 KiB
C
71 lines
1.7 KiB
C
// Copyright 2020, Collabora, Ltd.
|
|
// SPDX-License-Identifier: BSL-1.0
|
|
/*!
|
|
* @file
|
|
* @brief Shared memory helpers
|
|
* @author Ryan Pavlik <ryan.pavlik@collabora.com>
|
|
* @ingroup ipc_internal
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <xrt/xrt_handles.h>
|
|
#include <xrt/xrt_results.h>
|
|
|
|
#include <stddef.h>
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*!
|
|
* @class xrt_shmem_handle_t
|
|
* @brief Generic typedef for platform-specific shared memory handle.
|
|
*/
|
|
/*!
|
|
* Create and map a shared memory region.
|
|
*
|
|
* @param[in] size Desired size of region
|
|
* @param[in,out] out_handle Pointer to the handle to populate. Receives the
|
|
* handle if this succeeds, or the invalid value if it fails.
|
|
* @param[in,out] out_map Pointer to the pointer to populate with the mapping of
|
|
* this shared memory region. On failure, contents are undefined.
|
|
*
|
|
* @public @memberof xrt_shmem_handle_t
|
|
*/
|
|
xrt_result_t
|
|
ipc_shmem_create(size_t size, xrt_shmem_handle_t *out_handle, void **out_map);
|
|
|
|
/*!
|
|
* Map a shared memory region.
|
|
*
|
|
* @param[in] handle Handle for region
|
|
* @param[in] size Size of region
|
|
* @param[in,out] out_map Pointer to the pointer to populate with the mapping of
|
|
* this shared memory region.
|
|
*
|
|
* @public @memberof xrt_shmem_handle_t
|
|
*/
|
|
xrt_result_t
|
|
ipc_shmem_map(xrt_shmem_handle_t handle, size_t size, void **out_map);
|
|
|
|
/*!
|
|
* Destroy a handle to a shared memory region.
|
|
*
|
|
* This probably does not destroy the underlying region, if other references to
|
|
* it (in this process or others) are still open.
|
|
*
|
|
* @param[in,out] handle_ptr Pointer to the handle to destroy - will be checked
|
|
* for validity, destroyed, and cleared.
|
|
*
|
|
* @public @memberof xrt_shmem_handle_t
|
|
*/
|
|
void
|
|
ipc_shmem_destroy(xrt_shmem_handle_t *handle_ptr);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|