Resources | developer.brewmp.com Resources | developer.brewmp.com

Developer

resources

Memory groups

A memory group is a collection of memory regions. Each memory region belongs to exactly one memory group. A memory group can contain zero or more memory regions. Every memory region is associated with a memory group from the time the region is created until it is destroyed. The regions in a memory group can have different access rights and can originate from different memory pools.

A memory group is a collection of memory regions. Each memory region belongs to exactly one memory group. A memory group can contain zero or more memory regions. Every memory region is associated with a memory group from the time the region is created until it is destroyed. The regions in a memory group can have different access rights.

Groups and regions are treated as separate entities because operations on them are qualitatively different in terms of impact on system resources. Group manipulation allows the creation of a unique class of memory access rights. Rights granted to a group apply to all the regions in the group. On some platforms this will consume precious system resources. Region allocation and manipulation are relatively cheap and scalable. A memory region can be created and destroyed independently of any other region.

The regions in a group are created by IMemGroup_CreateRegion(), as follows:

interface IMemGroup: IQI
{
   /*
    * Creates a new memory region from a specific memory pool.
    *
    * @param piqiPool      Pointer to memory pool from which 
                           the region is to be allocated. 
    * @param ulVirtAddr    Starting virtual address of the
                           region. 
    * @param physInfo      Physical address to be used for
                           this region.
    * @param ulFlags       Memory allocation attributes
    * @param ppiMemRegion  Pointer to IMemRegion1 interface
                           pointer 
    */
     

    AEEResult CreateRegion(in IQI piqiPool, in uint32 ulVirtAddr, 
        in SeqPhysMemInfo physInfo, in uint32 ulFlags, 
        rout IMemRegion1 ppiMemRegion);
};