Add kernel/user memalign functions. Not fully integrated
This commit is contained in:
parent
b04ea3efa6
commit
e3a76b2e64
@ -215,8 +215,6 @@ struct sam_rhport_s
|
||||
|
||||
struct sam_ohci_s
|
||||
{
|
||||
/* Driver status */
|
||||
|
||||
volatile bool rhswait; /* TRUE: Thread is waiting for Root Hub Status change */
|
||||
|
||||
#ifndef CONFIG_USBHOST_INT_DISABLE
|
||||
@ -611,7 +609,7 @@ static void sam_putle16(uint8_t *dest, uint16_t val)
|
||||
* Name: sam_edalloc
|
||||
*
|
||||
* Description:
|
||||
* Return an endpoint descriptor to the free list
|
||||
* Allocate an endpoint descriptor by removing it from the free list
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
@ -634,7 +632,7 @@ static struct sam_ed_s *sam_edalloc(void)
|
||||
* Name: sam_edfree
|
||||
*
|
||||
* Description:
|
||||
* Return an endpoint descriptor to the free list
|
||||
* Free an endpoint descriptor by returning to the free list
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
@ -686,7 +684,7 @@ static struct sam_gtd_s *sam_tdalloc(void)
|
||||
* Name: sam_tdfree
|
||||
*
|
||||
* Description:
|
||||
* Return an transfer descriptor to the free list
|
||||
* Free a transfer descriptor by returning it to the free list
|
||||
*
|
||||
* Assumptions:
|
||||
* - Only called from the WDH interrupt handler (and during initialization).
|
||||
|
@ -97,6 +97,7 @@ extern "C"
|
||||
# define kumalloc(s) malloc(s)
|
||||
# define kuzalloc(s) zalloc(s)
|
||||
# define kurealloc(p,s) realloc(p,s)
|
||||
# define kumemalign(a,s) memalign(a,s)
|
||||
# define kufree(p) free(p)
|
||||
|
||||
#else
|
||||
@ -108,6 +109,7 @@ extern "C"
|
||||
# define kumalloc(s) umm_malloc(s)
|
||||
# define kuzalloc(s) umm_zalloc(s)
|
||||
# define kurealloc(p,s) umm_realloc(p,s)
|
||||
# define kumemalign(a,s) umm_memalign(a,s)
|
||||
# define kufree(p) umm_free(p)
|
||||
|
||||
#endif
|
||||
@ -127,6 +129,7 @@ extern "C"
|
||||
# define kmalloc(s) malloc(s)
|
||||
# define kzalloc(s) zalloc(s)
|
||||
# define krealloc(p,s) realloc(p,s)
|
||||
# define kmemalign(a,s) memalign(a,s)
|
||||
# define kfree(p) free(p)
|
||||
|
||||
#elif !defined(CONFIG_MM_KERNEL_HEAP)
|
||||
@ -143,6 +146,7 @@ extern "C"
|
||||
# define kmalloc(s) umm_malloc(s)
|
||||
# define kzalloc(s) umm_zalloc(s)
|
||||
# define krealloc(p,s) umm_realloc(p,s)
|
||||
# define kmemalign(a,s) umm_memalign(a,s)
|
||||
# define kfree(p) umm_free(p)
|
||||
|
||||
#else
|
||||
@ -158,6 +162,7 @@ void kmm_givesemaphore(void);
|
||||
FAR void *kmalloc(size_t size);
|
||||
FAR void *kzalloc(size_t size);
|
||||
FAR void *krealloc(FAR void *oldmem, size_t newsize);
|
||||
FAR void *kmemalign(size_t alignment, size_t size);
|
||||
void kfree(FAR void *mem);
|
||||
|
||||
#ifdef CONFIG_DEBUG
|
||||
|
@ -536,7 +536,7 @@
|
||||
#define QTD_TOKEN_IOC (1 << 15) /* Bit 15: Interrupt On Complete */
|
||||
#define QTD_TOKEN_NBYTES_SHIFT (16) /* Bits 16-30: Total Bytes to Transfer */
|
||||
#define QTD_TOKEN_NBYTES_MASK (0x7fff << QTD_TOKEN_NBYTES_SHIFT)
|
||||
#define QTD_TOKEN_TOGGLE (1 << 13) /* Bit 31: Data Toggle
|
||||
#define QTD_TOKEN_TOGGLE (1 << 13) /* Bit 31: Data Toggle */
|
||||
|
||||
/* qTD Buffer Page Pointer List. Paragraph 3.5.4 */
|
||||
/* Page 0 */
|
||||
|
@ -91,6 +91,7 @@
|
||||
# define umm_malloc(s) USERSPACE->mm_malloc(s)
|
||||
# define umm_zalloc(s) USERSPACE->mm_zalloc(s)
|
||||
# define umm_realloc(p,s) USERSPACE->mm_realloc(p,s)
|
||||
# define umm_memalign(a,s) USERSPACE->mm_memalign(a,s)
|
||||
# define umm_free(p) USERSPACE->mm_free(p)
|
||||
#endif
|
||||
|
||||
@ -140,6 +141,9 @@ struct userspace_s
|
||||
|
||||
FAR void *(*mm_malloc)(size_t size);
|
||||
FAR void *(*mm_realloc)(FAR void *oldmem, size_t newsize);
|
||||
#if 0 /* Not yet integrated */
|
||||
FAR void *(*mm_memalign)(size_t alignment, size_t size);
|
||||
#endif
|
||||
FAR void *(*mm_zalloc)(size_t size);
|
||||
void (*mm_free)(FAR void *mem);
|
||||
|
||||
|
@ -168,6 +168,26 @@ FAR void *krealloc(FAR void *oldmem, size_t newsize)
|
||||
return mm_realloc(&g_kmmheap, oldmem, newsize);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Name: kmemalign
|
||||
*
|
||||
* Description:
|
||||
* Allocate aligned memory in the kernel heap.
|
||||
*
|
||||
* Parameters:
|
||||
* alignment - Log2 byte alignment
|
||||
* size - Size (in bytes) of the new memory region to be allocated.
|
||||
*
|
||||
* Return Value:
|
||||
* The address of the re-allocated memory (NULL on failure to allocate)
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
FAR void *kmemalign(size_t alignment, size_t size)
|
||||
{
|
||||
return mm_memalign(&g_kmmheap, alignment, size);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Name: kfree
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user