@@ -159,7 +159,7 @@ static void comp_buffer_free(struct sof_audio_buffer *audio_buffer)
159159 notifier_unregister_all (NULL , buffer );
160160
161161 rfree (buffer -> stream .addr );
162- rfree ( buffer );
162+ sof_heap_free ( buffer -> audio_buffer . heap , buffer );
163163}
164164
165165APP_TASK_DATA static const struct source_ops comp_buffer_source_ops = {
@@ -189,7 +189,8 @@ static const struct audio_buffer_ops audio_buffer_ops = {
189189 .set_alignment_constants = comp_buffer_set_alignment_constants ,
190190};
191191
192- static struct comp_buffer * buffer_alloc_struct (void * stream_addr , size_t size ,
192+ static struct comp_buffer * buffer_alloc_struct (struct k_heap * heap ,
193+ void * stream_addr , size_t size ,
193194 uint32_t flags , bool is_shared )
194195{
195196 struct comp_buffer * buffer ;
@@ -200,13 +201,14 @@ static struct comp_buffer *buffer_alloc_struct(void *stream_addr, size_t size,
200201 if (is_shared )
201202 flags |= SOF_MEM_FLAG_COHERENT ;
202203
203- buffer = rzalloc (flags , sizeof (* buffer ));
204-
204+ buffer = sof_heap_alloc (heap , flags , sizeof (* buffer ), 0 );
205205 if (!buffer ) {
206206 tr_err (& buffer_tr , "could not alloc structure" );
207207 return NULL ;
208208 }
209209
210+ memset (buffer , 0 , sizeof (* buffer ));
211+
210212 buffer -> flags = flags ;
211213 /* Force channels to 2 for init to prevent bad call to clz in buffer_init_stream */
212214 buffer -> stream .runtime_stream_params .channels = 2 ;
@@ -221,14 +223,15 @@ static struct comp_buffer *buffer_alloc_struct(void *stream_addr, size_t size,
221223
222224 audio_stream_set_underrun (& buffer -> stream , !!(flags & SOF_BUF_UNDERRUN_PERMITTED ));
223225 audio_stream_set_overrun (& buffer -> stream , !!(flags & SOF_BUF_OVERRUN_PERMITTED ));
226+ buffer -> audio_buffer .heap = heap ;
224227
225228 comp_buffer_reset_source_list (buffer );
226229 comp_buffer_reset_sink_list (buffer );
227230
228231 return buffer ;
229232}
230233
231- struct comp_buffer * buffer_alloc (size_t size , uint32_t flags , uint32_t align ,
234+ struct comp_buffer * buffer_alloc (struct k_heap * heap , size_t size , uint32_t flags , uint32_t align ,
232235 bool is_shared )
233236{
234237 struct comp_buffer * buffer ;
@@ -249,7 +252,7 @@ struct comp_buffer *buffer_alloc(size_t size, uint32_t flags, uint32_t align,
249252 return NULL ;
250253 }
251254
252- buffer = buffer_alloc_struct (stream_addr , size , flags , is_shared );
255+ buffer = buffer_alloc_struct (heap , stream_addr , size , flags , is_shared );
253256 if (!buffer ) {
254257 tr_err (& buffer_tr , "could not alloc buffer structure" );
255258 rfree (stream_addr );
@@ -258,7 +261,8 @@ struct comp_buffer *buffer_alloc(size_t size, uint32_t flags, uint32_t align,
258261 return buffer ;
259262}
260263
261- struct comp_buffer * buffer_alloc_range (size_t preferred_size , size_t minimum_size ,
264+ struct comp_buffer * buffer_alloc_range (struct k_heap * heap , size_t preferred_size ,
265+ size_t minimum_size ,
262266 uint32_t flags , uint32_t align , bool is_shared )
263267{
264268 struct comp_buffer * buffer ;
@@ -292,7 +296,7 @@ struct comp_buffer *buffer_alloc_range(size_t preferred_size, size_t minimum_siz
292296 return NULL ;
293297 }
294298
295- buffer = buffer_alloc_struct (stream_addr , size , flags , is_shared );
299+ buffer = buffer_alloc_struct (heap , stream_addr , size , flags , is_shared );
296300 if (!buffer ) {
297301 tr_err (& buffer_tr , "could not alloc buffer structure" );
298302 rfree (stream_addr );
0 commit comments