Skip to content

Commit 216e69c

Browse files
Jyri Sarhakv2019i
authored andcommitted
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 3ad5e6d commit 216e69c

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
@@ -162,4 +162,72 @@ size_t get_shared_buffer_heap_size(void);
162162

163163
#endif
164164

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

0 commit comments

Comments
 (0)