-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
core_mmu: add shared memory subsystem
This patch adds new shared memory subsystem. It consists of: - VA space for shared buffer mappings - tee_mm_pool as allocator for that VA space - Functions to map/unmap shared buffers Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
- Loading branch information
Showing
7 changed files
with
648 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* | ||
* Copyright (c) 2016, EPAM Systems | ||
* All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright notice, | ||
* this list of conditions and the following disclaimer. | ||
* | ||
* 2. Redistributions in binary form must reproduce the above copyright notice, | ||
* this list of conditions and the following disclaimer in the documentation | ||
* and/or other materials provided with the distribution. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
*/ | ||
#ifndef SHMEM_H | ||
#define SHMEM_H | ||
|
||
/* | ||
* Shared memory mapping routines. Check shmem.c for documentation. | ||
*/ | ||
|
||
#include <mm/tee_mmu_types.h> | ||
#include <types_ext.h> | ||
|
||
struct shmem_mapping; | ||
|
||
int shmem_map_buffer(paddr_t pa, size_t size, paddr_t *pages, | ||
int pages_cnt, struct shmem_mapping **shmem_mapping); | ||
|
||
int shmem_map_page(paddr_t page, struct shmem_mapping **shmem_mapping); | ||
|
||
void shmem_unmap_buffer(struct shmem_mapping *mapping); | ||
struct shmem_mapping *shmem_find_by_pa(paddr_t paddr); | ||
|
||
void shmem_set_cookie(struct shmem_mapping *mapping, uint64_t cookie); | ||
struct shmem_mapping *shmem_get_by_cookie(uint64_t cookie); | ||
|
||
bool shmem_contains_region_va(void *va, size_t size); | ||
bool shmem_contains_region_pa(paddr_t pa, size_t size); | ||
bool shmem_intersects_pa(paddr_t pa, size_t size); | ||
|
||
void *shmem_pa2va(paddr_t pa); | ||
paddr_t shmem_va2pa(void *va); | ||
|
||
paddr_t shmem_get_pa(struct shmem_mapping *mapping); | ||
void *shmem_get_va(struct shmem_mapping *mapping); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.