Skip to content

Commit 54db2cb

Browse files
author
Jyri Sarha
committed
zephyr: lib: Remove ctx_alloc.h and put the contents into rtos/alloc.h
Remove the ctx_alloc.h header and move the implementation into rtos/alloc.h. Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
1 parent 1f4b8f0 commit 54db2cb

7 files changed

Lines changed: 68 additions & 86 deletions

File tree

src/audio/buffers/comp_buffer.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include <rtos/alloc.h>
1818
#include <rtos/cache.h>
1919
#include <sof/lib/vregion.h>
20-
#include <sof/ctx_alloc.h>
2120
#include <sof/list.h>
2221
#include <sof/schedule/dp_schedule.h>
2322
#include <rtos/spinlock.h>

src/audio/buffers/ring_buffer.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#include <sof/trace/trace.h>
88
#include <sof/lib/uuid.h>
99
#include <sof/lib/vregion.h>
10-
#include <sof/ctx_alloc.h>
1110

1211
#include <sof/audio/module_adapter/module/generic.h>
1312
#include <sof/audio/ring_buffer.h>

src/audio/module_adapter/module/generic.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include <sof/audio/data_blob.h>
1919
#include <sof/lib/fast-get.h>
2020
#include <sof/lib/vregion.h>
21-
#include <sof/ctx_alloc.h>
2221
#include <sof/schedule/dp_schedule.h>
2322
#if CONFIG_IPC_MAJOR_4
2423
#include <ipc4/header.h>

src/include/sof/audio/component.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
#include <rtos/idc.h>
2424
#include <rtos/mutex.h>
2525
#include <rtos/userspace_helper.h>
26-
#include <sof/ctx_alloc.h>
2726
#include <sof/lib/dai.h>
2827
#include <sof/schedule/schedule.h>
2928
#include <ipc/control.h>

src/include/sof/ctx_alloc.h

Lines changed: 0 additions & 81 deletions
This file was deleted.

src/include/sof/lib/dai-zephyr.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
#include <rtos/spinlock.h>
2727
#include <sof/trace/trace.h>
2828
#include <sof/ipc/topology.h>
29-
#include <sof/ctx_alloc.h>
3029
#include <sof/audio/pcm_converter.h>
3130
#include <sof/audio/ipc-config.h>
3231
#include <sof/audio/component.h>

zephyr/include/rtos/alloc.h

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,4 +150,72 @@ size_t get_shared_buffer_heap_size(void);
150150

151151
#endif
152152

153+
#include <sof/lib/vregion.h>
154+
155+
struct mod_alloc_ctx {
156+
struct k_heap *heap;
157+
struct vregion *vreg;
158+
};
159+
160+
/**
161+
* Allocate memory from a mod_alloc_ctx context.
162+
*
163+
* When the context has a vregion, allocates from the vregion interim
164+
* partition. Coherent memory is used when SOF_MEM_FLAG_COHERENT is set
165+
* in flags. Falls back to sof_heap_alloc() otherwise.
166+
*
167+
* @param ctx Allocation context (heap + optional vregion).
168+
* @param flags Allocation flags (SOF_MEM_FLAG_*).
169+
* @param size Size in bytes.
170+
* @param alignment Required alignment in bytes.
171+
* @return Pointer to allocated memory or NULL on failure.
172+
*/
173+
static inline void *sof_ctx_alloc(struct mod_alloc_ctx *ctx, uint32_t flags,
174+
size_t size, size_t alignment)
175+
{
176+
if (!ctx || !ctx->vreg)
177+
return sof_heap_alloc(ctx ? ctx->heap : NULL, flags, size, alignment);
178+
179+
if (flags & SOF_MEM_FLAG_COHERENT)
180+
return vregion_alloc_coherent_align(ctx->vreg, VREGION_MEM_TYPE_INTERIM,
181+
size, alignment);
182+
183+
return vregion_alloc_align(ctx->vreg, VREGION_MEM_TYPE_INTERIM, size, alignment);
184+
}
185+
186+
/**
187+
* Allocate zero-initialized memory from a mod_alloc_ctx context.
188+
* @param ctx Allocation context.
189+
* @param flags Allocation flags (SOF_MEM_FLAG_*).
190+
* @param size Size in bytes.
191+
* @param alignment Required alignment in bytes.
192+
* @return Pointer to allocated memory or NULL on failure.
193+
*/
194+
static inline void *sof_ctx_zalloc(struct mod_alloc_ctx *ctx, uint32_t flags,
195+
size_t size, size_t alignment)
196+
{
197+
void *ptr = sof_ctx_alloc(ctx, flags, size, alignment);
198+
199+
if (ptr)
200+
memset(ptr, 0, size);
201+
202+
return ptr;
203+
}
204+
205+
/**
206+
* Free memory allocated from a mod_alloc_ctx context.
207+
* @param ctx Allocation context.
208+
* @param ptr Pointer to free.
209+
*/
210+
static inline void sof_ctx_free(struct mod_alloc_ctx *ctx, void *ptr)
211+
{
212+
if (!ptr)
213+
return;
214+
215+
if (ctx && ctx->vreg)
216+
vregion_free(ctx->vreg, ptr);
217+
else
218+
sof_heap_free(ctx ? ctx->heap : NULL, ptr);
219+
}
220+
153221
#endif /* __ZEPHYR_RTOS_ALLOC_H__ */

0 commit comments

Comments
 (0)