#ifndef __NOUVEAU_MM_H__
#define __NOUVEAU_MM_H__
union nouveau_bo_config;
struct nouveau_mman;
/* Since a resource can be migrated, we need to decouple allocations from
* them. This struct is linked with fences for delayed freeing of allocs.
*/
struct nouveau_mm_allocation {
struct nouveau_mm_allocation *next;
void *priv;
uint32_t offset;
};
extern struct nouveau_mman *
nouveau_mm_create(struct nouveau_device *, uint32_t domain,
union nouveau_bo_config *);
extern void
nouveau_mm_destroy(struct nouveau_mman *);
extern struct nouveau_mm_allocation *
nouveau_mm_allocate(struct nouveau_mman *, uint32_t size,
struct nouveau_bo **, uint32_t *offset);
extern void
nouveau_mm_free(struct nouveau_mm_allocation *);
extern void
nouveau_mm_free_work(void *);
#endif // __NOUVEAU_MM_H__