# GrallocFuncs ## **Overview** **Related Modules:** [Display](Display.md) **Description:** Defines pointers to the memory driver functions. ## **Summary** ## Data Fields

Variable Name

Description

AllocMem )(GrallocBuffer *buffer)

int32_t(* 

Allocates memory based on the parameters passed by the GUI.

FreeMem )(GrallocBuffer *buffer)

void(* 

Releases memory.

Mmap )(GrallocBuffer *buffer)

void *(* 

Maps memory with a specified physical address and size to memory without cache in the process's address space.

MmapCache )(GrallocBuffer *buffer)

void *(* 

Maps memory with a specified physical address and size to memory with cache in the process's address space.

Unmap )(GrallocBuffer *buffer)

int32_t(* 

Unmaps memory, that is, removes any mappings in the process's address space.

FlushCache )(GrallocBuffer *buffer)

int32_t(* 

Flushes data from the cache to memory and invalidates the data in the cache.

FlushMCache )(GrallocBuffer *buffer)

int32_t(* 

Flushes data from the cache mapping to Mmap to memory and invalidates the data in the cache.

## **Details** ## **Field Documentation** ## AllocMem ``` int32_t(* GrallocFuncs::AllocMem) ([GrallocBuffer](GrallocBuffer.md) *buffer) ``` **Description:** Allocates memory based on the parameters passed by the GUI. **Parameters:**

Name

Description

hdl Indicates the pointer to the handle of memory.
type Indicates the type of memory to allocate. The value[/table/tgroup/tbody/row/entry/div {""}) [/table/tgroup/tbody/row/entry/div/div {""}) 0 (div] (div] indicates memory without cache, [/table/tgroup/tbody/row/entry/div {""}) [/table/tgroup/tbody/row/entry/div/div {""}) 1 (div] (div] indicates memory with cache, and[/table/tgroup/tbody/row/entry/div {""}) [/table/tgroup/tbody/row/entry/div/div {""}) 2 (div] (div] indicates shared memory.
size Indicates the size of memory to allocate, in bytes.
**Returns:** Returns **0** if the operation is successful; returns an error code defined in [DispErrCode](Display.md#ga12a925dadef7573cd74d63d06824f9b0) otherwise. ## FlushCache ``` int32_t(* GrallocFuncs::FlushCache) ([GrallocBuffer](GrallocBuffer.md) *buffer) ``` **Description:** Flushes data from the cache to memory and invalidates the data in the cache. **Parameters:**

Name

Description

hdl Indicates the pointer to the handle of the cache.
size Indicates the size of the cache from which data is to flush.
**Returns:** Returns **0** if the operation is successful; returns an error code defined in [DispErrCode](Display.md#ga12a925dadef7573cd74d63d06824f9b0) otherwise. ## FlushMCache ``` int32_t(* GrallocFuncs::FlushMCache) ([GrallocBuffer](GrallocBuffer.md) *buffer) ``` **Description:** Flushes data from the cache mapping to [Mmap](GrallocFuncs.md#ab64438d785bc59050cd4f0a759bd531b) to memory and invalidates the data in the cache. **Parameters:**

Name

Description

hdl Indicates the pointer to the handle of the cache.
size Indicates the size of the cache from which data is to flush.
**Returns:** Returns **0** if the operation is successful; returns an error code defined in [DispErrCode](Display.md#ga12a925dadef7573cd74d63d06824f9b0) otherwise. ## FreeMem ``` void(* GrallocFuncs::FreeMem) ([GrallocBuffer](GrallocBuffer.md) *buffer) ``` **Description:** Releases memory. **Parameters:**

Name

Description

hdl Indicates the pointer to the handle of memory that has been applied for.
## Mmap ``` void*(* GrallocFuncs::Mmap) ([GrallocBuffer](GrallocBuffer.md) *buffer) ``` **Description:** Maps memory with a specified physical address and size to memory without cache in the process's address space. **Parameters:**

Name

Description

phyAddr Indicates the physical address of memory to map.
size Indicates the size of memory to map.
**Returns:** Returns the pointer to a valid address if the operation is successful; returns **NULL** otherwise. ## MmapCache ``` void*(* GrallocFuncs::MmapCache) ([GrallocBuffer](GrallocBuffer.md) *buffer) ``` **Description:** Maps memory with a specified physical address and size to memory with cache in the process's address space. **Parameters:**

Name

Description

phyAddr Indicates the physical address of memory to map.
size Indicates the size of memory to map.
**Returns:** Returns the pointer to a valid address if the operation is successful; returns **NULL** otherwise. ## Unmap ``` int32_t(* GrallocFuncs::Unmap) ([GrallocBuffer](GrallocBuffer.md) *buffer) ``` **Description:** Unmaps memory, that is, removes any mappings in the process's address space. **Parameters:**

Name

Description

virAddr Indicates the pointer to the virtual address of memory to unmap.
size Indicates the size of memory to unmap.
**Returns:** Returns **0** if the operation is successful; returns an error code defined in [DispErrCode](Display.md#ga12a925dadef7573cd74d63d06824f9b0) otherwise.