static int sis_fb_alloc(struct drm_device *dev, void *data, struct drm_file *file_priv) { drm_sis_mem_t *fb = data; struct sis_memreq req; int retval = 0; req.size = fb->size; sis_malloc(&req); if (req.offset) { /* TODO */ fb->offset = req.offset; fb->free = req.offset; if (!add_alloc_set(fb->context, VIDEO_TYPE, fb->free)) { DRM_DEBUG("adding to allocation set fails\n"); sis_free(req.offset); retval = -EINVAL; } } else { fb->offset = 0; fb->size = 0; fb->free = 0; } DRM_DEBUG("alloc fb, size = %d, offset = %ld\n", fb->size, req.offset); return retval; }
static int sis_fb_alloc(struct drm_device *dev, void *data, struct drm_file *file_priv) { drm_sis_private_t *dev_priv = dev->dev_private; drm_sis_mem_t *fb = data; PMemBlock block; int retval = 0; if (dev_priv == NULL || dev_priv->FBHeap == NULL) return -EINVAL; block = mmAllocMem(dev_priv->FBHeap, fb->size, 0, 0); if (block) { /* TODO */ fb->offset = block->ofs; fb->free = (unsigned long)block; if (!add_alloc_set(fb->context, VIDEO_TYPE, fb->free)) { DRM_DEBUG("adding to allocation set fails\n"); mmFreeMem((PMemBlock) fb->free); retval = -EINVAL; } } else { fb->offset = 0; fb->size = 0; fb->free = 0; } DRM_DEBUG("alloc fb, size = %d, offset = %d\n", fb->size, fb->offset); return retval; }
static int sis_ioctl_agp_alloc(struct drm_device *dev, void *data, struct drm_file *file_priv) { drm_sis_private_t *dev_priv = dev->dev_private; drm_sis_mem_t *agp = data; PMemBlock block; int retval = 0; if (dev_priv == NULL || dev_priv->AGPHeap == NULL) return -EINVAL; block = mmAllocMem(dev_priv->AGPHeap, agp->size, 0, 0); if (block) { /* TODO */ agp->offset = block->ofs; agp->free = (unsigned long)block; if (!add_alloc_set(agp->context, AGP_TYPE, agp->free)) { DRM_DEBUG("adding to allocation set fails\n"); mmFreeMem((PMemBlock) agp->free); retval = -1; } } else { agp->offset = 0; agp->size = 0; agp->free = 0; } DRM_DEBUG("alloc agp, size = %d, offset = %d\n", agp->size, agp->offset); return retval; }
int sis_fb_alloc(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) { drm_sis_mem_t fb; struct sis_memreq req; int retval = 0; if (copy_from_user(&fb, (drm_sis_mem_t *)arg, sizeof(fb))) return -EFAULT; req.size = fb.size; sis_malloc(&req); if(req.offset){ /* TODO */ fb.offset = req.offset; fb.free = req.offset; if(!add_alloc_set(fb.context, VIDEO_TYPE, fb.free)){ DRM_DEBUG("adding to allocation set fails\n"); sis_free(req.offset); retval = -1; } } else{ fb.offset = 0; fb.size = 0; fb.free = 0; } if (copy_to_user((drm_sis_mem_t *)arg, &fb, sizeof(fb))) return -EFAULT; DRM_DEBUG("alloc fb, size = %d, offset = %ld\n", fb.size, req.offset); return retval; }
static int via_agp_alloc(drm_via_mem_t * mem) { drm_via_mm_t agp; PMemBlock block; int retval = 0; if (!AgpHeap) return -1; agp.size = mem->size; agp.context = mem->context; block = via_mmAllocMem(AgpHeap, agp.size, 5, 0); if (block) { agp.offset = block->ofs; agp.free = (unsigned long)block; if (!add_alloc_set(agp.context, VIA_MEM_AGP, agp.free)) { DRM_DEBUG("adding to allocation set fails\n"); via_mmFreeMem((PMemBlock) agp.free); retval = -1; } } else { agp.offset = 0; agp.size = 0; agp.free = 0; } mem->offset = agp.offset; mem->index = agp.free; DRM_DEBUG("alloc agp, size = %d, offset = %d\n", agp.size, (unsigned int)agp.offset); return retval; }
int sis_fb_alloc( DRM_IOCTL_ARGS ) { drm_sis_mem_t fb; struct sis_memreq req; int retval = 0; DRM_COPY_FROM_USER_IOCTL(fb, (drm_sis_mem_t *)data, sizeof(fb)); req.size = fb.size; sis_malloc(&req); if (req.offset) { /* TODO */ fb.offset = req.offset; fb.free = req.offset; if (!add_alloc_set(fb.context, VIDEO_TYPE, fb.free)) { DRM_DEBUG("adding to allocation set fails\n"); sis_free(req.offset); retval = DRM_ERR(EINVAL); } } else { fb.offset = 0; fb.size = 0; fb.free = 0; } DRM_COPY_TO_USER_IOCTL((drm_sis_mem_t *)data, fb, sizeof(fb)); DRM_DEBUG("alloc fb, size = %d, offset = %ld\n", fb.size, req.offset); return retval; }
int sis_ioctl_agp_alloc( DRM_IOCTL_ARGS ) { DRM_DEVICE; drm_sis_private_t *dev_priv = dev->dev_private; drm_sis_mem_t agp; PMemBlock block; int retval = 0; if (dev_priv == NULL || dev_priv->AGPHeap == NULL) return DRM_ERR(EINVAL); DRM_COPY_FROM_USER_IOCTL(agp, (drm_sis_mem_t *)data, sizeof(agp)); block = mmAllocMem(dev_priv->AGPHeap, agp.size, 0, 0); if (block) { /* TODO */ agp.offset = block->ofs; agp.free = (unsigned long)block; if (!add_alloc_set(agp.context, AGP_TYPE, agp.free)) { DRM_DEBUG("adding to allocation set fails\n"); mmFreeMem((PMemBlock)agp.free); retval = -1; } } else { agp.offset = 0; agp.size = 0; agp.free = 0; } DRM_COPY_TO_USER_IOCTL((drm_sis_mem_t *)data, agp, sizeof(agp)); DRM_DEBUG("alloc agp, size = %d, offset = %d\n", agp.size, agp.offset); return retval; }
int sis_fb_alloc( DRM_IOCTL_ARGS ) { DRM_DEVICE; drm_sis_private_t *dev_priv = dev->dev_private; drm_sis_mem_t fb; PMemBlock block; int retval = 0; if (dev_priv == NULL || dev_priv->FBHeap == NULL) return DRM_ERR(EINVAL); DRM_COPY_FROM_USER_IOCTL(fb, (drm_sis_mem_t *)data, sizeof(fb)); block = mmAllocMem(dev_priv->FBHeap, fb.size, 0, 0); if (block) { /* TODO */ fb.offset = block->ofs; fb.free = (unsigned long)block; if (!add_alloc_set(fb.context, VIDEO_TYPE, fb.free)) { DRM_DEBUG("adding to allocation set fails\n"); mmFreeMem((PMemBlock)fb.free); retval = DRM_ERR(EINVAL); } } else { fb.offset = 0; fb.size = 0; fb.free = 0; } DRM_COPY_TO_USER_IOCTL((drm_sis_mem_t *)data, fb, sizeof(fb)); DRM_DEBUG("alloc fb, size = %d, offset = %d\n", fb.size, fb.offset); return retval; }
static int via_fb_alloc(drm_via_mem_t * mem) { drm_via_mm_t fb; PMemBlock block; int retval = 0; if (!FBHeap) return -1; fb.size = mem->size; fb.context = mem->context; block = via_mmAllocMem(FBHeap, fb.size, 5, 0); if (block) { fb.offset = block->ofs; fb.free = (unsigned long)block; if (!add_alloc_set(fb.context, VIA_MEM_VIDEO, fb.free)) { DRM_DEBUG("adding to allocation set fails\n"); via_mmFreeMem((PMemBlock) fb.free); retval = -1; } } else { fb.offset = 0; fb.size = 0; fb.free = 0; retval = -1; } mem->offset = fb.offset; mem->index = fb.free; DRM_DEBUG("alloc fb, size = %d, offset = %d\n", fb.size, (int)fb.offset); return retval; }
int sisp_agp_alloc(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) { drm_sis_mem_t agp; PMemBlock block; int retval = 0; if(!AgpHeap) return -1; if (copy_from_user(&agp, (drm_sis_mem_t *)arg, sizeof(agp))) return -EFAULT; block = mmAllocMem(AgpHeap, agp.size, 0, 0); if(block){ /* TODO */ agp.offset = block->ofs; agp.free = (unsigned long)block; if(!add_alloc_set(agp.context, AGP_TYPE, agp.free)){ DRM_DEBUG("adding to allocation set fails\n"); mmFreeMem((PMemBlock)agp.free); retval = -1; } } else{ agp.offset = 0; agp.size = 0; agp.free = 0; } if (copy_to_user((drm_sis_mem_t *)arg, &agp, sizeof(agp))) return -EFAULT; DRM_DEBUG("alloc agp, size = %d, offset = %d\n", agp.size, agp.offset); return retval; }