Diff for /xfs-cmds/xfsprogs/io/mmap.c between versions 1.11 and 1.12

version 1.11, 2005/11/11 14:28:31 version 1.12, 2006/12/08 03:01:47
Line 323  msync_f( Line 323  msync_f(
         return 0;          return 0;
 }  }
   
 static int  
 read_mapping(  
         char            *dest,  
         off64_t         offset,  
         int             dump,  
         off64_t         dumpoffset,  
         size_t          dumplength)  
 {  
         *dest = *(((char *)mapping->addr) + offset);  
   
         if (offset % pagesize == 0) {  
                 if (dump == 2)  
                         dumpoffset += mapping->offset;  
                 if (dump)  
                         dump_buffer(dumpoffset, dumplength);  
                 return 1;  
         }  
         return 0;  
 }  
   
 static void  static void
 mread_help(void)  mread_help(void)
 {  {
Line 373  mread_f( Line 353  mread_f(
         int             argc,          int             argc,
         char            **argv)          char            **argv)
 {  {
         off64_t         offset, tmp;          off64_t         offset, tmp, dumpoffset, printoffset;
         ssize_t         length;          ssize_t         length;
         size_t          dumplen;          size_t          dumplen, cnt = 0;
         char            *bp;          char            *bp;
         void            *start;          void            *start;
         int             dump = 0, rflag = 0, c;          int             dump = 0, rflag = 0, c;
Line 422  mread_f( Line 402  mread_f(
         start = check_mapping_range(mapping, offset, length, 0);          start = check_mapping_range(mapping, offset, length, 0);
         if (!start)          if (!start)
                 return 0;                  return 0;
           dumpoffset = offset - mapping->offset;
           if (dump == 2)
                   printoffset = offset;
           else
                   printoffset = dumpoffset;
   
         if (alloc_buffer(pagesize, 0, 0) < 0)          if (alloc_buffer(pagesize, 0, 0) < 0)
                 return 0;                  return 0;
Line 432  mread_f( Line 417  mread_f(
                 dumplen = pagesize;                  dumplen = pagesize;
   
         if (rflag) {          if (rflag) {
                 for (tmp = length, c = 0; tmp > 0; tmp--, bp++, c = 1)                  for (tmp = length - 1, c = 0; tmp >= 0; tmp--, c = 1) {
                         if (read_mapping(bp, tmp, c? dump:0, offset, dumplen)) {                          *bp = *(((char *)mapping->addr) + dumpoffset + tmp);
                           cnt++;
                           if (c && cnt == dumplen) {
                                   if (dump) {
                                           dump_buffer(printoffset, dumplen);
                                           printoffset += dumplen;
                                   }
                                 bp = (char *)buffer;                                  bp = (char *)buffer;
                                 dumplen = pagesize;                                  dumplen = pagesize;
                                   cnt = 0;
                           } else {
                                   bp++;
                         }                          }
                   }
         } else {          } else {
                 for (tmp = 0, c = 0; tmp < length; tmp++, bp++, c = 1)                  for (tmp = 0, c = 0; tmp < length; tmp++, c = 1) {
                         if (read_mapping(bp, tmp, c? dump:0, offset, dumplen)) {                          *bp = *(((char *)mapping->addr) + dumpoffset + tmp);
                           cnt++;
                           if (c && cnt == dumplen) {
                                   if (dump)
                                           dump_buffer(printoffset + tmp -
                                                   (dumplen - 1), dumplen);
                                 bp = (char *)buffer;                                  bp = (char *)buffer;
                                 dumplen = pagesize;                                  dumplen = pagesize;
                                   cnt = 0;
                           } else {
                                   bp++;
                         }                          }
         }  
         /* dump the remaining (partial page) part of the read buffer */  
         if (dump) {  
                 if (rflag)  
                         dumplen = length % pagesize;  
                 else  
                         dumplen = tmp % pagesize;  
                 if (dumplen) {  
                         if (dump == 2)  
                                 tmp += mapping->offset;  
                         dump_buffer(tmp, dumplen);  
                 }                  }
         }          }
         return 0;          return 0;
Line 571  mwrite_f( Line 563  mwrite_f(
                 return 0;                  return 0;
   
         if (rflag) {          if (rflag) {
                 for (tmp = offset + length; tmp > offset; tmp--)                  for (tmp = offset + length -1; tmp >= offset; tmp--)
                         ((char *)mapping->addr)[tmp] = seed;                          ((char *)mapping->addr)[tmp] = seed;
         } else {          } else {
                 for (tmp = offset; tmp < offset + length; tmp++)                  for (tmp = offset; tmp < offset + length; tmp++)

Removed from v.1.11  
changed lines
  Added in v.1.12


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>