1 | /* SPDX-License-Identifier: GPL-2.0-or-later */
|
---|
2 | #ifndef __SOUND_UTIL_MEM_H
|
---|
3 | #define __SOUND_UTIL_MEM_H
|
---|
4 |
|
---|
5 | #include <linux/mutex.h>
|
---|
6 | /*
|
---|
7 | * Copyright (C) 2000 Takashi Iwai <tiwai@suse.de>
|
---|
8 | *
|
---|
9 | * Generic memory management routines for soundcard memory allocation
|
---|
10 | */
|
---|
11 |
|
---|
12 | /*
|
---|
13 | * memory block
|
---|
14 | */
|
---|
15 | struct snd_util_memblk {
|
---|
16 | unsigned int size; /* size of this block */
|
---|
17 | unsigned int offset; /* zero-offset of this block */
|
---|
18 | struct list_head list; /* link */
|
---|
19 | };
|
---|
20 |
|
---|
21 | #define snd_util_memblk_argptr(blk) (void*)((char*)(blk) + sizeof(struct snd_util_memblk))
|
---|
22 |
|
---|
23 | /*
|
---|
24 | * memory management information
|
---|
25 | */
|
---|
26 | struct snd_util_memhdr {
|
---|
27 | unsigned int size; /* size of whole data */
|
---|
28 | struct list_head block; /* block linked-list header */
|
---|
29 | int nblocks; /* # of allocated blocks */
|
---|
30 | unsigned int used; /* used memory size */
|
---|
31 | int block_extra_size; /* extra data size of chunk */
|
---|
32 | struct mutex block_mutex; /* lock */
|
---|
33 | };
|
---|
34 |
|
---|
35 | /*
|
---|
36 | * prototypes
|
---|
37 | */
|
---|
38 | struct snd_util_memhdr *snd_util_memhdr_new(int memsize);
|
---|
39 | void snd_util_memhdr_free(struct snd_util_memhdr *hdr);
|
---|
40 | struct snd_util_memblk *snd_util_mem_alloc(struct snd_util_memhdr *hdr, int size);
|
---|
41 | int snd_util_mem_free(struct snd_util_memhdr *hdr, struct snd_util_memblk *blk);
|
---|
42 | int snd_util_mem_avail(struct snd_util_memhdr *hdr);
|
---|
43 |
|
---|
44 | /* functions without mutex */
|
---|
45 | struct snd_util_memblk *__snd_util_mem_alloc(struct snd_util_memhdr *hdr, int size);
|
---|
46 | void __snd_util_mem_free(struct snd_util_memhdr *hdr, struct snd_util_memblk *blk);
|
---|
47 | struct snd_util_memblk *__snd_util_memblk_new(struct snd_util_memhdr *hdr,
|
---|
48 | unsigned int units,
|
---|
49 | struct list_head *prev);
|
---|
50 |
|
---|
51 | #endif /* __SOUND_UTIL_MEM_H */
|
---|