#include "alloc_class.h"
#define VERBOSE_SILENT 0
#define VERBOSE_DEFAULT 1
#define VERBOSE_MAX 2
struct pmempool_info_args {
char *file;
unsigned col_width;
bool human;
bool force;
pmem_pool_type_t type;
bool use_range;
struct ranges ranges;
int vlevel;
int vdata;
int vhdrdump;
int vstats;
struct {
size_t walk;
} log;
struct {
int vmap;
int vflog;
int vbackup;
bool skip_zeros;
bool skip_error;
bool skip_no_flag;
} blk;
struct {
int vlanes;
int vroot;
int vobjects;
int valloc;
int voobhdr;
int vheap;
int vzonehdr;
int vchunkhdr;
int vbitmap;
uint64_t lane_sections;
bool lanes_recovery;
bool ignore_empty_obj;
uint64_t chunk_types;
size_t replica;
struct ranges lane_ranges;
struct ranges type_ranges;
struct ranges zone_ranges;
struct ranges chunk_ranges;
} obj;
};
struct pmem_blk_stats {
uint32_t total;
uint32_t zeros;
uint32_t errors;
uint32_t noflag;
};
struct pmem_obj_class_stats {
uint64_t n_units;
uint64_t n_used;
};
struct pmem_obj_zone_stats {
uint64_t n_chunks;
uint64_t n_chunks_type[MAX_CHUNK_TYPE];
uint64_t size_chunks;
uint64_t size_chunks_type[MAX_CHUNK_TYPE];
struct pmem_obj_class_stats class_stats[MAX_ALLOCATION_CLASSES];
};
struct pmem_obj_type_stats {
TAILQ_ENTRY(pmem_obj_type_stats) next;
uint64_t type_num;
uint64_t n_objects;
uint64_t n_bytes;
};
struct pmem_obj_stats {
uint64_t n_total_objects;
uint64_t n_total_bytes;
uint64_t n_zones;
uint64_t n_zones_used;
struct pmem_obj_zone_stats *zone_stats;
TAILQ_HEAD(obj_type_stats_head, pmem_obj_type_stats) type_stats;
};
struct pmem_info {
const char *file_name;
struct pool_set_file *pfile;
struct pmempool_info_args args;
struct options *opts;
struct pool_set *poolset;
pmem_pool_type_t type;
struct pmem_pool_params params;
struct {
struct pmem_blk_stats stats;
} blk;
struct {
struct pmemobjpool *pop;
struct palloc_heap *heap;
struct alloc_class_collection *alloc_classes;
size_t size;
struct pmem_obj_stats stats;
uint64_t uuid_lo;
uint64_t objid;
} obj;
struct {
struct pmemcto *pcp;
size_t size;
} cto;
};
int pmempool_info_func(char *appname, int argc, char *argv[]);
void pmempool_info_help(char *appname);
int pmempool_info_read(struct pmem_info *pip, void *buff,
size_t nbytes, uint64_t off);
int pmempool_info_blk(struct pmem_info *pip);
int pmempool_info_log(struct pmem_info *pip);
int pmempool_info_obj(struct pmem_info *pip);
int pmempool_info_btt(struct pmem_info *pip);
int pmempool_info_cto(struct pmem_info *pip);