Memory Management API Changes
The table below shows the difference in API for memory management.
Memory Management API
µC/OS-II ( | µC/OS-III ( | Note |
---|---|---|
OS_MEM * OSMemCreate( void *addr, INT32U nblks, INT32U blksize, INT8U *perr); | void OSMemCreate( OS_MEM *p_mem, CPU_CHAR *p_name, void *p_addr, OS_MEM_QTY n_blks, OS_MEM_SIZE blk_size, OS_ERR *p_err); | (1) |
void * OSMemGet( OS_MEM *pmem, INT8U *perr); | void * OSMemGet( OS_MEM *p_mem, OS_ERR *p_err); | |
INT8U OSMemNameGet( OS_MEM *pmem, INT8U **pname, INT8U *perr); | ||
void OSMemNameSet( OS_MEM *pmem, INT8U *pname, INT8U *perr); | void OSMemPut( OS_MEM *p_mem, void *p_blk, OS_ERR *p_err); | (2) |
INT8U OSMemPut( OS_MEM *pmem, void *pblk); | ||
INT8U OSMemQuery( OS_MEM *pmem, OS_MEM_DATA *p_mem_data); | (3) |
(1) In µC/OS-II, OSMemCreate()
returns the address of an OS_MEM
object, which is used as the “handle” to the newly created memory partition. In µC/OS-III, the application must allocate storage for an OS_MEM
, which serves the same purpose. The benefit in µC/OS-III is that it is not necessary to predetermine the number of memory partitions at compile time.
(2) µC/OS-III does not need an OSMemNameSet()
since the name of the memory partition is passed as an argument to OSMemCreate()
.
(3) µC/OS-III does not support query calls.