memalloc.h revision 01d3fd3318a767e6ba75492ed08d57896df95d63
1202a77d28ac251545f6f998a974690212309b927Iliyan Malchev/* 229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed * Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved. 3202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 4202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * Redistribution and use in source and binary forms, with or without 5202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * modification, are permitted provided that the following conditions are 6202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * met: 7202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * * Redistributions of source code must retain the above copyright 8202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * notice, this list of conditions and the following disclaimer. 9202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * * Redistributions in binary form must reproduce the above 10202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * copyright notice, this list of conditions and the following 11202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * disclaimer in the documentation and/or other materials provided 12202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * with the distribution. 13202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * * Neither the name of Code Aurora Forum, Inc. nor the names of its 14202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * contributors may be used to endorse or promote products derived 15202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * from this software without specific prior written permission. 16202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * 17202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 18202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 20202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 21202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 24202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 26202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28202a77d28ac251545f6f998a974690212309b927Iliyan Malchev */ 29202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 30202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#ifndef GRALLOC_MEMALLOC_H 31202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#define GRALLOC_MEMALLOC_H 32202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 33202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include <stdlib.h> 34202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 35202a77d28ac251545f6f998a974690212309b927Iliyan Malchevnamespace gralloc { 36202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 3729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedstruct alloc_data { 3829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void *base; 3929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int fd; 4029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int offset; 4129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed size_t size; 4229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed size_t align; 4329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed unsigned int pHandle; 4429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool uncached; 4529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed unsigned int flags; 4629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int allocType; 4729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed}; 48202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 4901d3fd3318a767e6ba75492ed08d57896df95d63Naseer Ahmedclass IMemAlloc { 50202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 5129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed public: 5229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // Allocate buffer - fill in the alloc_data 5329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // structure and pass it in. Mapped address 5429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // and fd are returned in the alloc_data struct 5529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int alloc_buffer(alloc_data& data) = 0; 56202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 5729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // Free buffer 5829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int free_buffer(void *base, size_t size, 5929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int offset, int fd) = 0; 60202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // Map buffer 6229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int map_buffer(void **pBase, size_t size, 6329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int offset, int fd) = 0; 64202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // Unmap buffer 6629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int unmap_buffer(void *base, size_t size, 6729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int offset) = 0; 68202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // Clean and invalidate 7029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int clean_buffer(void *base, size_t size, 7129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int offset, int fd) = 0; 72202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 7329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // Destructor 7429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual ~IMemAlloc() {}; 75202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 7629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed enum { 7729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed FD_INIT = -1, 78202a77d28ac251545f6f998a974690212309b927Iliyan Malchev }; 79202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 8029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed}; 8129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 82202a77d28ac251545f6f998a974690212309b927Iliyan Malchev} // end gralloc namespace 83202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#endif // GRALLOC_MEMALLOC_H 84