patch-2.4.0-test11 linux/include/linux/highmem.h
Next file: linux/include/linux/irda.h
Previous file: linux/include/linux/fs.h
Back to the patch index
Back to the overall index
- Lines: 111
- Date:
Sat Nov 18 20:56:59 2000
- Orig file:
v2.4.0-test10/linux/include/linux/highmem.h
- Orig date:
Sun Oct 8 10:50:37 2000
diff -u --recursive --new-file v2.4.0-test10/linux/include/linux/highmem.h linux/include/linux/highmem.h
@@ -17,50 +17,56 @@
extern struct page * replace_with_highmem(struct page *);
extern struct buffer_head * create_bounce(int rw, struct buffer_head * bh_orig);
+
+static inline char *bh_kmap(struct buffer_head *bh)
+{
+ return kmap(bh->b_page) + bh_offset(bh);
+}
+
+static inline void bh_kunmap(struct buffer_head *bh)
+{
+ kunmap(bh->b_page);
+}
+
#else /* CONFIG_HIGHMEM */
static inline unsigned int nr_free_highpages(void) { return 0; }
#define prepare_highmem_swapout(page) page
#define replace_with_highmem(page) page
-static __inline__ unsigned long kmap(struct page * page) {
- return (unsigned long) page_address(page);
-}
+static inline void *kmap(struct page *page) { return page_address(page); }
#define kunmap(page) do { } while (0)
#define kmap_atomic(page,idx) kmap(page)
#define kunmap_atomic(page,idx) kunmap(page)
+#define bh_kmap(bh) ((bh)->b_data)
+#define bh_kunmap(bh) do { } while (0);
+
#endif /* CONFIG_HIGHMEM */
/* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */
static inline void clear_user_highpage(struct page *page, unsigned long vaddr)
{
- unsigned long kaddr;
-
- kaddr = kmap(page);
- clear_user_page((void *)kaddr, vaddr);
+ clear_user_page(kmap(page), vaddr);
kunmap(page);
}
static inline void clear_highpage(struct page *page)
{
- unsigned long kaddr;
-
- kaddr = kmap(page);
- clear_page((void *)kaddr);
+ clear_page(kmap(page));
kunmap(page);
}
static inline void memclear_highpage(struct page *page, unsigned int offset, unsigned int size)
{
- unsigned long kaddr;
+ char *kaddr;
if (offset + size > PAGE_SIZE)
BUG();
kaddr = kmap(page);
- memset((void *)(kaddr + offset), 0, size);
+ memset(kaddr + offset, 0, size);
kunmap(page);
}
@@ -69,34 +75,34 @@
*/
static inline void memclear_highpage_flush(struct page *page, unsigned int offset, unsigned int size)
{
- unsigned long kaddr;
+ char *kaddr;
if (offset + size > PAGE_SIZE)
BUG();
kaddr = kmap(page);
- memset((void *)(kaddr + offset), 0, size);
+ memset(kaddr + offset, 0, size);
flush_page_to_ram(page);
kunmap(page);
}
static inline void copy_user_highpage(struct page *to, struct page *from, unsigned long vaddr)
{
- unsigned long vfrom, vto;
+ char *vfrom, *vto;
vfrom = kmap(from);
vto = kmap(to);
- copy_user_page((void *)vto, (void *)vfrom, vaddr);
+ copy_user_page(vto, vfrom, vaddr);
kunmap(from);
kunmap(to);
}
static inline void copy_highpage(struct page *to, struct page *from)
{
- unsigned long vfrom, vto;
+ char *vfrom, *vto;
vfrom = kmap(from);
vto = kmap(to);
- copy_page((void *)vto, (void *)vfrom);
+ copy_page(vto, vfrom);
kunmap(from);
kunmap(to);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)