int via_mem_alloc(struct drm_device *dev, void *data, struct drm_file *file_priv) { drm_via_mem_t *mem = data; switch (mem.type) { case VIA_MEM_VIDEO: if (via_fb_alloc(mem) < 0) return -EFAULT; return 0; case VIA_MEM_AGP: if (via_agp_alloc(mem) < 0) return -EFAULT; return 0; } return -EFAULT; }
int via_mem_alloc(DRM_IOCTL_ARGS) { drm_via_mem_t mem; DRM_COPY_FROM_USER_IOCTL(mem, (drm_via_mem_t *) data, sizeof(mem)); switch (mem.type) { case VIDEO: if (via_fb_alloc(&mem) < 0) return -EFAULT; DRM_COPY_TO_USER_IOCTL((drm_via_mem_t *) data, mem, sizeof(mem)); return 0; case AGP: if (via_agp_alloc(&mem) < 0) return -EFAULT; DRM_COPY_TO_USER_IOCTL((drm_via_mem_t *) data, mem, sizeof(mem)); return 0; } return -EFAULT; }