9 #include <linux/stat.h>
10 #include <linux/time.h>
11 #include <linux/kernel.h>
14 #include <linux/shm.h>
15 #include <linux/errno.h>
16 #include <linux/mman.h>
17 #include <linux/string.h>
18 #include <linux/fcntl.h>
21 #include <asm/uaccess.h>
37 unsigned int already_read;
49 pg_addr =
kmap(vmf->page);
58 while (already_read < count) {
62 to_read = bufsize - (pos %
bufsize);
64 to_read =
min_t(
unsigned int, to_read, count - already_read);
69 pg_addr + already_read,
70 &read_this_time) != 0) {
73 pos += read_this_time;
74 already_read += read_this_time;
76 if (read_this_time < to_read) {
80 ncp_inode_close(inode);
96 return VM_FAULT_MAJOR;
99 static const struct vm_operations_struct ncp_file_mmap =
101 .fault = ncp_file_mmap_fault,
108 struct inode *inode = file->
f_path.dentry->d_inode;
124 vma->
vm_ops = &ncp_file_mmap;