Hi
   
  I have implemented a pseudo char driver/kernel module and implemented the 
mmap operation for learning. When user-space program calls mmap, the kernel 
module maps a single page of memory allocated using get_zeroed_page.
   
  From user space, I can read/write to the page. I also implemented read 
operation in my module. Now read method actually reads and returns the content 
of the same page that I mapped to user-space from mmap (the address is stored 
in the module structure). The problem is read function does not seem to see the 
changes made in user-space. It always gets the old value. For example if in 
userspace program I do,
   
           ptr = mmap (...)  /*  ptr is the mmapped address */
   
                                   /* modify the content of the page */ 
           for (i = 0; i < PAGE_SIZE; i++) 
                 *ptr++ = 1;
   
           fd = open("/dev/node", O_RDWR);  /* open the device node */
           read(fd, buf, PAGE_SIZE);             /* read from buf */
            
  Inside the implementation of read system call, I print the contents of tha 
page in log using printk. But I don't see all 1s. Its just old content, zero 
filled page. 
   
  Aren't they both accessing the same page? What am I doing wrong?
   
  Thanks,
  Meraj
   
   
   
   
   
   

       
---------------------------------
Catch up on fall's hot new shows on Yahoo! TV.  Watch previews, get listings, 
and more!

Reply via email to