]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - ipc/ipcdev.git/blobdiff - qnx/src/ipc3x_dev/tiler/usr/memmgr/public/memmgr/memmgr.h
QNX: Remove tiler and update makefiles
[ipc/ipcdev.git] / qnx / src / ipc3x_dev / tiler / usr / memmgr / public / memmgr / memmgr.h
diff --git a/qnx/src/ipc3x_dev/tiler/usr/memmgr/public/memmgr/memmgr.h b/qnx/src/ipc3x_dev/tiler/usr/memmgr/public/memmgr/memmgr.h
deleted file mode 100644 (file)
index 52a45bd..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Copyright (c) 2010, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * *  Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * *  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.
- *
- * *  Neither the name of Texas Instruments Incorporated nor the names of
- *    its contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 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 OWNER 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.
- * */
-/*
- * memmgr.h
- *
- * Memory Allocator Interface functions for TI OMAP processors.
- */
-
-#ifndef _MEMMGR_H_
-#define _MEMMGR_H_
-
-/* retrieve type definitions */
-#include "memmgr/mem_types.h"
-
-/**
- * Memory Allocator is responsible for:
- * <ol>
- * <li>Allocate 1D and 2D blocks and pack them into a buffer.
- * <li>Free such allocated blocks
- * <li>Map 1D buffers into tiler space
- * <li>Unmap 1D buffers from tiler space
- * <li>Verify if an address lies in 1D or 2D space, whether it
- * is mapped (to tiler space)
- * <li>Mapping Ducati memory blocks to host processor and vice
- * versa.
- * </ol>
- *
- * The allocator distinguishes between:
- * <ul>
- * <li>1D and 2D blocks
- * <li>2D blocks allocated by MemAlloc are non-cacheable.  All
- * other blocks are cacheable (e.g. 1D blocks).  Preallocated
- * may or may not be cacheable, depending on how they've been
- * allocated, but are assumed to be cacheable.
- * <li>buffers (an ordered collection of one or more blocks
- * mapped consecutively)
- * </ul>
- *
- * The allocator tracks each buffer based on (addr, size).
- *
- * Also, via the tiler manager, it tracks each block.  The tiler
- * manager itself also tracks each buffer.
- *
- */
-
-/**
- * Memory Allocator block specification
- *
- * Size of a 2D buffer is calculated as height * stride.  stride
- * is the smallest multiple of page size that is at least
- * the width, and is set by MemMgr_Alloc.
- *
- * Size of a 1D buffer is calculated as length.  stride is not
- * set by MemMgr_Alloc, but it can be set by the user.  length
- * must be a multiple of stride unless stride is 0.
- *
- * @author a0194118 (9/1/2009)
- */
-struct MemAllocBlock {
-    pixel_fmt_t pixelFormat; /* pixel format */
-    union {
-        struct {
-            pixels_t width;  /* width of 2D buffer */
-            pixels_t height; /* height of 2D buffer */
-        } area;
-        bytes_t  len;        /* length of 1D buffer.  Must be multiple of
-                                stride if stride is not 0. */
-    } dim;
-    uint32_t stride;    /* must be multiple of page size.  Can be 0 only
-                           if pixelFormat is PIXEL_FMT_PAGE. */
-    void    *ptr;       /* pointer to beginning of buffer */
-    uint32_t reserved;  /* system space address (used internally) */
-};
-
-typedef struct MemAllocBlock MemAllocBlock;
-
-/**
- * Returns the page size.  This is required for allocating 1D
- * blocks that stack under any other blocks.
- *
- * @author a0194118 (9/3/2009)
- *
- * @return Page size.
- */
-bytes_t MemMgr_PageSize();
-
-/**
- * Allocates a buffer as a list of blocks (1D or 2D), and maps
- * them so that they are packaged consecutively. Returns the
- * pointer to the first block, or NULL on failure.
- * <p>
- * The size of each block other than the last must be a multiple
- * of the page size.  This ensures that the blocks stack
- * correctly.  Set stride to 0 to avoid stride/length alignment
- * constraints.  Stride of 2D blocks will be updated by this
- * method.
- * <p>
- * 2D blocks will be non-cacheable, while 1D blocks will be
- * cacheable.
- * <p>
- * On success, the buffer is registered with the memory
- * allocator.
- * <p>
- * As a side effect, if the operation was successful, the ssptr
- * fields of the block specification will be filled with the
- * system-space addresses, while the ptr fields will be set to
- * the individual blocks.  The stride information is set for 2D
- * blocks.
- *
- * @author a0194118 (9/1/2009)
- *
- * @param blocks     Block specification information.  This
- *                   should be an array of at least num_blocks
- *                   elements.
- * @param num_blocks Number of blocks to be included in the
- *                   allocated memory segment
- *
- * @return Pointer to the buffer, which is also the pointer to
- *         the first allocated block. NULL if allocation failed.
- */
-void *MemMgr_Alloc(MemAllocBlock blocks[], int num_blocks);
-
-/**
- * Frees a buffer allocated by MemMgr_Alloc(). It fails for
- * any buffer not allocated by MemMgr_Alloc() or one that has
- * been already freed.
- * <p>
- * It also unregisters the buffer with the memory allocator.
- * <p>
- * This function unmaps the processor's virtual address to the
- * tiler address for all blocks allocated, unregisters the
- * buffer, and frees all of its tiler blocks.
- *
- * @author a0194118 (9/1/2009)
- *
- * @param bufPtr     Pointer to the buffer allocated (returned)
- *                   by MemMgr_Alloc()
- *
- * @return 0 on success.  Non-0 error value on failure.
- */
-int MemMgr_Free(void *bufPtr);
-
-/**
- * This function maps the user provided data buffer to the tiler
- * space as blocks, and maps that area into the process space
- * consecutively. You can map a data buffer multiple times,
- * resulting in multiple mapping for the same buffer. However,
- * you cannot map a buffer that is already mapped to tiler, e.g.
- * a buffer pointer returned by this method.
- *
- * In phase 1 and 2, the supported configurations are:
- * <ol>
- * <li> Mapping exactly one 1D block to tiler space (e.g.
- * MapIn1DMode).
- * </ol>
- *
- * @author a0194118 (9/3/2009)
- *
- * @param blocks     Block specification information.  This
- *                   should be an array of at least num_blocks
- *                   elements.  The ptr fields must contain the
- *                   user allocated buffers for the block.
- *                   These will be updated with the mapped
- *                   addresses of these blocks on success.
- *
- *                   Each block must be page aligned.  Length of
- *                   each block also must be page aligned.
- *
- * @param num_blocks Number of blocks to be included in the
- *                   mapped memory segment
- *
- * @return Pointer to the buffer, which is also the pointer to
- *         the first mapped block. NULL if allocation failed.
- */
-void *MemMgr_Map(MemAllocBlock blocks[], int num_blocks);
-
-/**
- * This function unmaps the user provided data buffer from tiler
- * space that was mapped to the tiler space in paged mode using
- * MemMgr_Map().  It also unmaps the buffer itself from the
- * process space.  Trying to unmap a previously unmapped buffer
- * will fail.
- *
- * @author a0194118 (9/1/2009)
- *
- * @param bufPtr    Pointer to the buffer as returned by a
- *                  previous call to MemMgr_MapIn1DMode()
- *
- * @return 0 on success.  Non-0 error value on failure.
- */
-int MemMgr_UnMap(void *bufPtr);
-
-/**
- * Checks if a given virtual address is mapped by tiler manager
- * to tiler space.
- * <p>
- * This function is equivalent to MemMgr_Is1DBuffer(ptr) ||
- * MemMgr_Is2DBuffer(ptr).  It retrieves the system space
- * address that the virtual address maps to. If this system
- * space address lies within the tiler area, the function
- * returns TRUE.
- *
- *
- * @author a0194118 (9/1/2009)
- *
- * @param ptr   Pointer to a virtual address
- *
- * @return TRUE (non-0) if the virtual address is within a
- *         buffer that was mapped into tiler space, e.g. by
- *         calling MemMgr_MapIn1DMode() or MemMgr_MapIn2DMode()
- */
-bool MemMgr_IsMapped(void *ptr);
-
-/**
- * Checks if a given virtual address lies in a tiler 1D buffer.
- * <p>
- * This function retrieves the system space address that the
- * virtual address maps to.  If this system space address is
- * within the 1D tiler area, it is considered lying within a 1D
- * buffer.
- *
- * @author a0194118 (9/1/2009)
- *
- * @param ptr   Pointer to a virtual address
- *
- * @return TRUE (non-0) if the virtual address is within a
- *         mapped 1D tiler buffer.  FALSE (0) if the virtual
- *         address is not mapped, invalid, or is mapped to an
- *         area other than a 1D tiler buffer.  In phase 1,
- *         however, it is TRUE it the virtual address is mapped
- *         to the page-mode area of the tiler space.
- */
-bool MemMgr_Is1DBlock(void *ptr);
-
-/**
- * Checks if a given virtual address lies in a 2D buffer.
- * <p>
- * This function retrieves the system space address that the
- * virtual address maps to.  If this system space address is
- * within the 2D tiler area, it is considered lying within a 2D
- * buffer.
- *
- * @author a0194118 (9/1/2009)
- *
- * @param ptr   Pointer to a virtual address
- *
- * @return TRUE (non-0) if the virtual address is within a
- *         mapped 2D buffer.  FALSE (0) if the virtual address
- *         is not mapped, invalid, or is mapped to an area other
- *         than a 2D buffer.  In phase 1, however, it is TRUE it
- *         the virtual address is mapped to any area of the
- *         tiler space other than page mode.
- */
-bool MemMgr_Is2DBlock(void *ptr);
-
-/**
- * Returns the stride corresponding to a virtual address.  For
- * 1D and 2D buffers it returns the stride supplied
- * with/acquired during the allocation/mapping.  For non-tiler
- * buffers it returns the page size.
- * <p>
- * NOTE: on Ducati phase 1, stride should return 16K for 8-bit
- * 2D buffers, 32K for 16-bit and 32-bit 2D buffers, the stride
- * used for alloc/map for 1D buffers, and the page size for
- * non-tiler buffers.
- *
- * For unmapped addresses it returns 0.  However, this cannot be
- * used to determine if an address is unmapped as 1D buffers
- * could also have 0 stride (e.g. compressed buffers).
- *
- * @author a0194118 (9/1/2009)
- *
- * @param ptr    pointer to a virtual address
- *
- * @return The virtual stride of the block that contains the
- *         address.
- */
-bytes_t MemMgr_GetStride(void *ptr);
-
-#endif