Make dump file writing replaceable in test

This commit is contained in:
Yinan Zhang 2020-03-17 20:27:52 -07:00
parent 21e44c45d9
commit 7455813e57
2 changed files with 7 additions and 2 deletions

View File

@ -96,6 +96,8 @@ size_t prof_tdata_count(void);
size_t prof_bt_count(void); size_t prof_bt_count(void);
typedef int (prof_dump_open_file_t)(const char *, int); typedef int (prof_dump_open_file_t)(const char *, int);
extern prof_dump_open_file_t *JET_MUTABLE prof_dump_open_file; extern prof_dump_open_file_t *JET_MUTABLE prof_dump_open_file;
typedef ssize_t (prof_dump_write_file_t)(int, const void *, size_t);
extern prof_dump_write_file_t *JET_MUTABLE prof_dump_write_file;
typedef bool (prof_dump_header_t)(tsdn_t *, bool, const prof_cnt_t *); typedef bool (prof_dump_header_t)(tsdn_t *, bool, const prof_cnt_t *);
extern prof_dump_header_t *JET_MUTABLE prof_dump_header; extern prof_dump_header_t *JET_MUTABLE prof_dump_header;
typedef int (prof_dump_open_maps_t)(); typedef int (prof_dump_open_maps_t)();

View File

@ -488,6 +488,8 @@ prof_dump_open(bool propagate_err, const char *filename) {
return fd; return fd;
} }
prof_dump_write_file_t *JET_MUTABLE prof_dump_write_file = malloc_write_fd;
static bool static bool
prof_dump_flush(bool propagate_err) { prof_dump_flush(bool propagate_err) {
bool ret = false; bool ret = false;
@ -495,10 +497,11 @@ prof_dump_flush(bool propagate_err) {
cassert(config_prof); cassert(config_prof);
err = malloc_write_fd(prof_dump_fd, prof_dump_buf, prof_dump_buf_end); err = prof_dump_write_file(prof_dump_fd, prof_dump_buf,
prof_dump_buf_end);
if (err == -1) { if (err == -1) {
if (!propagate_err) { if (!propagate_err) {
malloc_write("<jemalloc>: write() failed during heap " malloc_write("<jemalloc>: failed to write during heap "
"profile flush\n"); "profile flush\n");
if (opt_abort) { if (opt_abort) {
abort(); abort();