• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
3 
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *   * Redistributions of source code must retain the above copyright
8  *     notice, this list of conditions and the following disclaimer.
9  *   * Redistributions in binary form must reproduce the above
10  *     copyright notice, this list of conditions and the following
11  *     disclaimer in the documentation and/or other materials provided
12  *     with the distribution.
13  *   * Neither the name of Code Aurora Forum, Inc. nor the names of its
14  *     contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #ifndef GRALLOC_MEMALLOC_H
31 #define GRALLOC_MEMALLOC_H
32 
33 #include <stdlib.h>
34 
35 namespace gralloc {
36 
37 struct alloc_data {
38     void           *base;
39     int            fd;
40     int            offset;
41     size_t         size;
42     size_t         align;
43     unsigned int   pHandle;
44     bool           uncached;
45     unsigned int   flags;
46     int            allocType;
47 };
48 
49 class IMemAlloc {
50 
51     public:
52     // Allocate buffer - fill in the alloc_data
53     // structure and pass it in. Mapped address
54     // and fd are returned in the alloc_data struct
55     virtual int alloc_buffer(alloc_data& data) = 0;
56 
57     // Free buffer
58     virtual int free_buffer(void *base, size_t size,
59                             int offset, int fd) = 0;
60 
61     // Map buffer
62     virtual int map_buffer(void **pBase, size_t size,
63                            int offset, int fd) = 0;
64 
65     // Unmap buffer
66     virtual int unmap_buffer(void *base, size_t size,
67                              int offset) = 0;
68 
69     // Clean and invalidate
70     virtual int clean_buffer(void *base, size_t size,
71                              int offset, int fd) = 0;
72 
73     // Destructor
~IMemAlloc()74     virtual ~IMemAlloc() {};
75 
76     enum {
77         FD_INIT = -1,
78     };
79 
80 };
81 
82 } // end gralloc namespace
83 #endif // GRALLOC_MEMALLOC_H
84