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