Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Creates Clears a memory segment.

Files

lib_mem.h/lib_mem.c

...

Code Block
LanguageC++
CaptionTextCAPTION
languagecpp
          void  Mem_SegCreate (const  CPU_CHAR    *p_name,
	                                  SegClr (MEM_SEG     *p_seg,
                                      CPU_ADDR     seg_base_addr,
                                      CPU_SIZE_T   size,
                                      CPU_SIZE_T   padding_align,
                 
                    LIB_ERR     *p_err);

Arguments

p_name

...

p_seg

Pointer to segment data. Must be allocated by caller.

seg_base_addr

Address of segment's first byte.

...

Total size of segment, in bytes.

padding_align

Padding alignment, in bytes, that will be added to any allocated buffer from this memory segment. MUST be a power of 2. LIB_MEM_SEG_PADDING_ALIGN_NONE means no padding.

p_err

Pointer to variable that will receive the return error code from this function.

LIB_MEM_ERR_NONE

LIB_MEM_ERR_INVALID_SEG_SIZE

LIB_MEM_ERR_INVALID_MEM_ALIGN

LIB_MEM_ERR_NULL_PTR

LIB_MEM_ERR_INVALID_SEG_OVERLAP

LIB_MEM_ERR_INVALID_SEG_EXISTS

Returned Value

None.

Required Configuration

None.

Notes / Warnings

  1. New segments are checked for overlap with existing segments. A critical section needs to be maintained during the whole list search and add procedure to prevent a reentrant call from creating another segment overlapping with the one being addedThis function must be used with extreme caution. It must only be called on memory segments that are no longer used.
  2. This function is disabled when debug mode is enabled to avoid heap memory leaks.