All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20041207184258.071bf401.toch@dfpost.ru>

diff --git a/a/1.txt b/N1/1.txt
index 2f2ee7d..e49c242 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -2,93 +2,3 @@ Hi!
 I try to write small driver to make access to pci device resource from 
 userland using mmap.
 Code below didnt work. :(
-From I module in debug I make some testes - I can read from device registers
-but after mmap from userspace I reading just part of memory. :(
-Some cache?
-
-CPU - au1500
-
-.....
-
-static unsigned long *offset;
-
-static int mdrv_mmap(struct file * file, struct vm_area_struct *vma)                                   
-{                                                                                                      
-                                                                                                       
- int ret;                                                                                              
- struct inode *inode;                                                                                  
- inode = file->f_dentry->d_inode;                                                                      
- 
- ret = -EINVAL;                                                                                        
- unsigned long start = vma->vm_start;                                                                  
- unsigned long size = (vma->vm_end-vma->vm_start);                                                     
- 
- offset = ioremap(0x40000000,0x40);
- 
- printk("0x%p\n",__pa(offset));
-
-
-  printk("lb 0x%X\n",offset[ 0x3C>>2 ] );
-
-  vma->vm_flags |= VM_LOCKED;
-
-  printk("+++++0x%X 0x%X\n",start,size);
-
-  vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
-                                   
-  ret = remap_page_range( start, 0x40000000, size, vma->vm_page_prot ); //0x40000000 is first iomem range of pci device
-
-  return ret;                                                               
-}
-
-struct file_operations mdrv_fops = {
-  .open = mdrv_open,
-  .release = mdrv_close,
-  .read = mdrv_read,
-  .write = mdrv_write,
-  .mmap = mdrv_mmap
-};
-
-....
-
-
-Here is userland 
-#include "mdrv.h"
-#include <sys/mman.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <linux/kernel.h>
-#include <string.h>
-
-int fd,fd2;
-
-int
-main ()
-{
-
-  fd = open("/dev/mboard0",O_RDWR);
-  
-  unsigned long *x;
-  x = mmap(NULL,64,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
-
-  printf("mmap return: 0x%X",x);
-
-  if(x == MAP_FAILED)
-  {
-   printf(" it is very bad! :(\n");
-   perror("mmap:");
-   return -1;
-  }
- 
-  printf(" its ok!\n");
-
-  int i;
-  for(i=0;i<16;i++)
-  {
-  printf(" %d = 0x%X\n",i,x[i]);
-  }
-  munmap(x,64);
-  
-  return 0;
-}
diff --git a/a/content_digest b/N1/content_digest
index d91a204..6eba1fb 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -7,96 +7,6 @@
  "Hi!\n"
  "I try to write small driver to make access to pci device resource from \n"
  "userland using mmap.\n"
- "Code below didnt work. :(\n"
- "From I module in debug I make some testes - I can read from device registers\n"
- "but after mmap from userspace I reading just part of memory. :(\n"
- "Some cache?\n"
- "\n"
- "CPU - au1500\n"
- "\n"
- ".....\n"
- "\n"
- "static unsigned long *offset;\n"
- "\n"
- "static int mdrv_mmap(struct file * file, struct vm_area_struct *vma)                                   \n"
- "{                                                                                                      \n"
- "                                                                                                       \n"
- " int ret;                                                                                              \n"
- " struct inode *inode;                                                                                  \n"
- " inode = file->f_dentry->d_inode;                                                                      \n"
- " \n"
- " ret = -EINVAL;                                                                                        \n"
- " unsigned long start = vma->vm_start;                                                                  \n"
- " unsigned long size = (vma->vm_end-vma->vm_start);                                                     \n"
- " \n"
- " offset = ioremap(0x40000000,0x40);\n"
- " \n"
- " printk(\"0x%p\\n\",__pa(offset));\n"
- "\n"
- "\n"
- "  printk(\"lb 0x%X\\n\",offset[ 0x3C>>2 ] );\n"
- "\n"
- "  vma->vm_flags |= VM_LOCKED;\n"
- "\n"
- "  printk(\"+++++0x%X 0x%X\\n\",start,size);\n"
- "\n"
- "  vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);\n"
- "                                   \n"
- "  ret = remap_page_range( start, 0x40000000, size, vma->vm_page_prot ); //0x40000000 is first iomem range of pci device\n"
- "\n"
- "  return ret;                                                               \n"
- "}\n"
- "\n"
- "struct file_operations mdrv_fops = {\n"
- "  .open = mdrv_open,\n"
- "  .release = mdrv_close,\n"
- "  .read = mdrv_read,\n"
- "  .write = mdrv_write,\n"
- "  .mmap = mdrv_mmap\n"
- "};\n"
- "\n"
- "....\n"
- "\n"
- "\n"
- "Here is userland \n"
- "#include \"mdrv.h\"\n"
- "#include <sys/mman.h>\n"
- "#include <stdio.h>\n"
- "#include <string.h>\n"
- "#include <fcntl.h>\n"
- "#include <linux/kernel.h>\n"
- "#include <string.h>\n"
- "\n"
- "int fd,fd2;\n"
- "\n"
- "int\n"
- "main ()\n"
- "{\n"
- "\n"
- "  fd = open(\"/dev/mboard0\",O_RDWR);\n"
- "  \n"
- "  unsigned long *x;\n"
- "  x = mmap(NULL,64,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);\n"
- "\n"
- "  printf(\"mmap return: 0x%X\",x);\n"
- "\n"
- "  if(x == MAP_FAILED)\n"
- "  {\n"
- "   printf(\" it is very bad! :(\\n\");\n"
- "   perror(\"mmap:\");\n"
- "   return -1;\n"
- "  }\n"
- " \n"
- "  printf(\" its ok!\\n\");\n"
- "\n"
- "  int i;\n"
- "  for(i=0;i<16;i++)\n"
- "  {\n"
- "  printf(\" %d = 0x%X\\n\",i,x[i]);\n"
- "  }\n"
- "  munmap(x,64);\n"
- "  \n"
- "  return 0;\n"
- }
+ Code below didnt work. :(
 
-ad21899effa24acae07437f077fe237363b0e38a87ad8c2fd215d78c226138ce
+d8ac32b8e104262e0fcd2f67650713bff278f94c07b5c249dec0d7ba499028f7

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.