fixes for kernel >=2.4.0-test7
authorDavid Schleef <ds@schleef.org>
Fri, 13 Oct 2000 09:27:15 +0000 (09:27 +0000)
committerDavid Schleef <ds@schleef.org>
Fri, 13 Oct 2000 09:27:15 +0000 (09:27 +0000)
comedi/kvmem.c
comedi/kvmem.h

index 6ed3874a8a10c3987d7e0ed4c7aa17333330c2c5..d23b8fb56349239b08edf7688d4989fcfc459298 100644 (file)
@@ -6,7 +6,11 @@ void * rvmalloc(unsigned long size)
        void * mem;
        unsigned long adr, page;
         
+#if LINUX_VERSION_CODE < 0x020300
        mem=vmalloc(size);
+#else
+       mem=vmalloc_32(size);
+#endif
        if (mem) 
        {
                memset(mem, 0, size); /* Clear the ram out, no junk to the user */
@@ -18,7 +22,7 @@ void * rvmalloc(unsigned long size)
                        mem_map_reserve(MAP_NR(phys_to_virt(page)));
 #else
                        page = kvirt_to_pa(adr);
-                       mem_map_reserve(MAP_NR(__va(page)));
+                       mem_map_reserve(virt_to_page(__va(page)));
 #endif
                        adr+=PAGE_SIZE;
                        size-=PAGE_SIZE;
@@ -41,7 +45,7 @@ void rvfree(void * mem, unsigned long size)
                        mem_map_unreserve(MAP_NR(phys_to_virt(page)));
 #else
                        page = kvirt_to_pa(adr);
-                       mem_map_unreserve(MAP_NR(__va(page)));
+                       mem_map_unreserve(virt_to_page(__va(page)));
 #endif
                        adr+=PAGE_SIZE;
                        size-=PAGE_SIZE;
index a09427e86fab8d221446eb96d9947d3ad24639fe..deb540a4dedd60d33d6d6631caa260a7522263b3 100644 (file)
@@ -59,14 +59,15 @@ static inline unsigned long uvirt_to_kva(pgd_t *pgd, unsigned long adr)
        pmd_t *pmd;
        pte_t *ptep, pte;
 
-
        if(!pgd_none(*pgd)) {
                pmd = pmd_offset(pgd, adr);
                if (!pmd_none(*pmd)) {
                        ptep = pte_offset(pmd, adr);
                        pte = *ptep;
-                       if(pte_present(pte))
-                               ret = (page_address(pte_page(pte))|(adr&(PAGE_SIZE-1)));
+                       if(pte_present(pte)){
+                               ret = (unsigned long) page_address(pte_page(pte));
+                               ret |= (adr&(PAGE_SIZE-1));
+                       }
                }
        }
        return ret;