1 #ifndef __NOUVEAU_MM_H__ 2 #define __NOUVEAU_MM_H__ 3 4 union nouveau_bo_config; 5 struct 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 */ 10 struct nouveau_mm_allocation { 11 struct nouveau_mm_allocation *next; 12 void *priv; 13 uint32_t offset; 14 }; 15 16 extern struct nouveau_mman * 17 nouveau_mm_create(struct nouveau_device *, uint32_t domain, 18 union nouveau_bo_config *); 19 20 extern void 21 nouveau_mm_destroy(struct nouveau_mman *); 22 23 extern struct nouveau_mm_allocation * 24 nouveau_mm_allocate(struct nouveau_mman *, uint32_t size, 25 struct nouveau_bo **, uint32_t *offset); 26 27 extern void 28 nouveau_mm_free(struct nouveau_mm_allocation *); 29 30 extern void 31 nouveau_mm_free_work(void *); 32 33 #endif // __NOUVEAU_MM_H__ 34