Subversion Repositories Kolibri OS

Rev

Rev 3260 | Rev 3290 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3260 Rev 3263
Line -... Line 1...
-
 
1
#include 
-
 
2
#include 
1
#include 
3
#include 
2
#include 
4
#include 
3
#include "i915_drv.h"
5
#include "i915_drv.h"
4
#include "intel_drv.h"
6
#include "intel_drv.h"
Line 55... Line 57...
55
        filep->pages[index] = page;
57
        filep->pages[index] = page;
56
    };
58
    };
Line 57... Line 59...
57
 
59
 
58
    return page;
60
    return page;
-
 
61
};
-
 
62
 
-
 
63
unsigned long vm_mmap(struct file *file, unsigned long addr,
-
 
64
         unsigned long len, unsigned long prot,
-
 
65
         unsigned long flag, unsigned long offset)
-
 
66
{
-
 
67
    char *mem, *ptr;
-
 
68
    int i;
-
 
69
 
-
 
70
    if (unlikely(offset + PAGE_ALIGN(len) < offset))
-
 
71
        return -EINVAL;
-
 
72
    if (unlikely(offset & ~PAGE_MASK))
-
 
73
        return -EINVAL;
-
 
74
 
-
 
75
    mem = UserAlloc(len);
-
 
76
    if(unlikely(mem == NULL))
-
 
77
        return -ENOMEM;
-
 
78
 
-
 
79
    for(i = offset, ptr = mem; i < offset+len; i+= 4096, ptr+= 4096)
-
 
80
    {
-
 
81
        struct page *page;
-
 
82
 
-
 
83
        page = shmem_read_mapping_page_gfp(file, i/PAGE_SIZE,0);
-
 
84
 
-
 
85
        if (unlikely(IS_ERR(page)))
-
 
86
            goto err;
-
 
87
 
-
 
88
        MapPage(ptr, (addr_t)page, PG_SHARED|PG_UW);
-
 
89
    }
-
 
90
 
-
 
91
    return (unsigned long)mem;
-
 
92
err:
-
 
93
    UserFree(mem);
-
 
94
    return -ENOMEM;
-
 
95
};
-
 
96