File: setzero.cc

package info (click to toggle)
bobcat 6.11.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,292 kB
  • sloc: cpp: 21,370; fortran: 6,507; makefile: 2,787; sh: 724; perl: 401; ansic: 26
file content (26 lines) | stat: -rw-r--r-- 679 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#define XERR "memoryaccess"
#include "memoryaccess.ih"

// truncate.cc updates d_maxSize and ensures that
//             newSize <= d_nBlocks * d_blockSize

// if truncate's new size is less than d_writtenUntil then the bytes
// from the new size till d_writtenUntil are set to 0, 

    // by truncate.cc

void MemoryAccess::setZero(size_t from)
{
    size_t toDo = d_writtenUntil - from;      // #bytes to set to 0

    while (toDo > 0)
    {
        load(from);                         // from is OK, set by truncate

        size_t avail = min(d_writtenUntil, d_blockEnd) - from;
        memset(ptr(from), 0, avail);
        toDo -= avail;
        from = d_blockEnd;
    }
}