<dec f='src/src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_api.h' l='503' type='int ttm_bo_init(struct ttm_bo_device * bdev, struct ttm_buffer_object * bo, unsigned long size, enum ttm_bo_type type, struct ttm_placement * placement, __uint32_t page_alignment, _Bool interrubtible, struct file * persistent_swap_storage, size_t acc_size, struct sg_table * sg, void (*)(struct ttm_buffer_object *) destroy)'/>
<doc f='src/src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_api.h' l='469'>/**
 * ttm_bo_init
 *
 * @bdev: Pointer to a ttm_bo_device struct.
 * @bo: Pointer to a ttm_buffer_object to be initialized.
 * @size: Requested size of buffer object.
 * @type: Requested type of buffer object.
 * @flags: Initial placement flags.
 * @page_alignment: Data alignment in pages.
 * @interruptible: If needing to sleep to wait for GPU resources,
 * sleep interruptible.
 * @persistent_swap_storage: Usually the swap storage is deleted for buffers
 * pinned in physical memory. If this behaviour is not desired, this member
 * holds a pointer to a persistent shmem object. Typically, this would
 * point to the shmem object backing a GEM object if TTM is used to back a
 * GEM user interface.
 * @acc_size: Accounted size for this object.
 * @destroy: Destroy function. Use NULL for kfree().
 *
 * This function initializes a pre-allocated struct ttm_buffer_object.
 * As this object may be part of a larger structure, this function,
 * together with the @destroy function,
 * enables driver-specific objects derived from a ttm_buffer_object.
 * On successful return, the object kref and list_kref are set to 1.
 * If a failure occurs, the function will call the @destroy function, or
 * kfree() if @destroy is NULL. Thus, after a failure, dereferencing @bo is
 * illegal and will likely cause memory corruption.
 *
 * Returns
 * -ENOMEM: Out of memory.
 * -EINVAL: Invalid placement flags.
 * -ERESTARTSYS: Interrupted by signal while sleeping waiting for resources.
 */</doc>
<use f='src/src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c' l='243' u='c' c='nouveau_bo_new'/>
<use f='src/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_object.c' l='193' u='c' c='radeon_bo_create'/>
<def f='src/src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c' l='1121' ll='1222' type='int ttm_bo_init(struct ttm_bo_device * bdev, struct ttm_buffer_object * bo, unsigned long size, enum ttm_bo_type type, struct ttm_placement * placement, __uint32_t page_alignment, _Bool interruptible, struct file * persistent_swap_storage, size_t acc_size, struct sg_table * sg, void (*)(struct ttm_buffer_object *) destroy)'/>
<use f='src/src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c' l='1272' u='c' c='ttm_bo_create'/>
