radeon: fixup mmap interface

This commit is contained in:
Dave Airlie 2009-04-06 13:02:21 +10:00
parent 96982ffc09
commit 2f0720455d

View file

@ -29,6 +29,9 @@
* Dave Airlie * Dave Airlie
* Jérôme Glisse <glisse@freedesktop.org> * Jérôme Glisse <glisse@freedesktop.org>
*/ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h> #include <stdio.h>
#include <stdint.h> #include <stdint.h>
#include <stdlib.h> #include <stdlib.h>
@ -144,6 +147,7 @@ static int bo_map(struct radeon_bo *bo, int write)
struct radeon_bo_gem *bo_gem = (struct radeon_bo_gem*)bo; struct radeon_bo_gem *bo_gem = (struct radeon_bo_gem*)bo;
struct drm_radeon_gem_mmap args; struct drm_radeon_gem_mmap args;
int r; int r;
void *ptr;
if (bo_gem->map_count++ != 0) { if (bo_gem->map_count++ != 0) {
return 0; return 0;
@ -156,12 +160,16 @@ static int bo_map(struct radeon_bo *bo, int write)
DRM_RADEON_GEM_MMAP, DRM_RADEON_GEM_MMAP,
&args, &args,
sizeof(args)); sizeof(args));
if (!r) { if (r) {
bo->ptr = (void *)(unsigned long)args.addr_ptr;
} else {
fprintf(stderr, "error mapping %p 0x%08X (error = %d)\n", fprintf(stderr, "error mapping %p 0x%08X (error = %d)\n",
bo, bo->handle, r); bo, bo->handle, r);
return r;
} }
ptr = mmap(0, args.size, PROT_READ|PROT_WRITE, MAP_SHARED, bo->bom->fd, args.addr_ptr);
if (ptr == MAP_FAILED)
return -errno;
bo->ptr = ptr;
return r; return r;
} }