1#ifndef __NOUVEAU_MM_H__
2#define __NOUVEAU_MM_H__
3
4union nouveau_bo_config;
5struct nouveau_mman;
6
7/* Since a resource can be migrated, we need to decouple allocations from
8 * them. This struct is linked with fences for delayed freeing of allocs.
9 */
10struct nouveau_mm_allocation {
11   struct nouveau_mm_allocation *next;
12   void *priv;
13   uint32_t offset;
14};
15
16extern struct nouveau_mman *
17nouveau_mm_create(struct nouveau_device *, uint32_t domain,
18                  union nouveau_bo_config *);
19
20extern void
21nouveau_mm_destroy(struct nouveau_mman *);
22
23extern struct nouveau_mm_allocation *
24nouveau_mm_allocate(struct nouveau_mman *, uint32_t size,
25                    struct nouveau_bo **, uint32_t *offset);
26
27extern void
28nouveau_mm_free(struct nouveau_mm_allocation *);
29
30extern void
31nouveau_mm_free_work(void *);
32
33#endif // __NOUVEAU_MM_H__
34