| 1 |
|
| 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 <[email protected]>
|
| 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;
|
| 17 | unsigned int offset;
|
| 18 | struct list_head list;
|
| 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;
|
| 28 | struct list_head block;
|
| 29 | int nblocks;
|
| 30 | unsigned int used;
|
| 31 | int block_extra_size;
|
| 32 | struct mutex block_mutex;
|
| 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 |
|
| 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
|