| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_PLATFORM_MEMORY_H_ |
| #define SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_PLATFORM_MEMORY_H_ |
| |
| // This file contains system calls related to memory management. |
| |
| #include <stdint.h> |
| #include <zircon/types.h> |
| |
| #include "kernel.h" |
| |
| #if defined(__cplusplus) |
| extern "C" { |
| #endif // defined(__cplusplus) |
| |
| // A struct representing a device-visible memory buffer. |
| struct iwl_iobuf; |
| |
| // Initialize a physically contiguous memory buffer. |
| zx_status_t iwl_iobuf_allocate_contiguous(struct device* dev, size_t size, |
| struct iwl_iobuf** out_iobuf); |
| |
| // Get the size of an iwl_iobuf. |
| size_t iwl_iobuf_size(const struct iwl_iobuf* iobuf); |
| |
| // Get the virtual address of an iwl_iobuf. |
| void* iwl_iobuf_virtual(const struct iwl_iobuf* iobuf); |
| |
| // Get the physical address of an iwl_iobuf. |
| dma_addr_t iwl_iobuf_physical(const struct iwl_iobuf* iobuf); |
| |
| // Perform a cache flush on a range of an iwl_iobuf. |
| zx_status_t iwl_iobuf_cache_flush(struct iwl_iobuf* iobuf, size_t offset, size_t size); |
| |
| // Release an iwl_iobuf. |
| void iwl_iobuf_release(struct iwl_iobuf* iobuf); |
| |
| #if defined(__cplusplus) |
| } // extern "C" |
| #endif // defined(__cplusplus) |
| |
| #endif // SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_PLATFORM_MEMORY_H_ |