Revision 6d3962bf cpus.c

b/cpus.c
1183 1183
exit:
1184 1184
    fclose(f);
1185 1185
}
1186

  
1187
void qmp_pmemsave(int64_t addr, int64_t size, const char *filename,
1188
                  Error **errp)
1189
{
1190
    FILE *f;
1191
    uint32_t l;
1192
    uint8_t buf[1024];
1193

  
1194
    f = fopen(filename, "wb");
1195
    if (!f) {
1196
        error_set(errp, QERR_OPEN_FILE_FAILED, filename);
1197
        return;
1198
    }
1199

  
1200
    while (size != 0) {
1201
        l = sizeof(buf);
1202
        if (l > size)
1203
            l = size;
1204
        cpu_physical_memory_rw(addr, buf, l, 0);
1205
        if (fwrite(buf, 1, l, f) != l) {
1206
            error_set(errp, QERR_IO_ERROR);
1207
            goto exit;
1208
        }
1209
        addr += l;
1210
        size -= l;
1211
    }
1212

  
1213
exit:
1214
    fclose(f);
1215
}

Also available in: Unified diff