#include <stdio.h>
#include <sys/sysctl.h>
#include "libhammer.h"
static
int
dosysctl(const char *sname, int64_t *value)
{
size_t len;
int error;
len = sizeof(*value);
error = sysctlbyname(sname, value, &len, NULL, 0);
return error;
}
int
libhammer_stats_redo(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_redo", value));
}
int
libhammer_stats_undo(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_undo", value));
}
int
libhammer_stats_commits(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_commits", value));
}
int
libhammer_stats_inode_flushes(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_inode_flushes", value));
}
int
libhammer_stats_disk_write(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_disk_write", value));
}
int
libhammer_stats_disk_read(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_disk_read", value));
}
int
libhammer_stats_file_iopsw(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_file_iopsw", value));
}
int
libhammer_stats_file_iopsr(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_file_iopsr", value));
}
int
libhammer_stats_file_write(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_file_write", value));
}
int
libhammer_stats_file_read(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_file_read", value));
}
int
libhammer_stats_record_iterations(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_record_iterations", value));
}
int
libhammer_stats_root_iterations(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_btree_root_iterations", value));
}
int
libhammer_stats_btree_iterations(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_btree_iterations", value));
}
int
libhammer_stats_btree_splits(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_btree_splits", value));
}
int
libhammer_stats_btree_elements(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_btree_elements", value));
}
int
libhammer_stats_btree_deletes(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_btree_deletes", value));
}
int
libhammer_stats_btree_inserts(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_btree_inserts", value));
}
int
libhammer_stats_btree_lookups(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_btree_lookups", value));
}
int
libhammer_stats_btree_searches(int64_t *value)
{
return (dosysctl("vfs.hammer.stats_btree_searches", value));
}
int
libhammer_btree_stats(struct libhammer_btree_stats *bstats)
{
if (libhammer_stats_btree_elements(&bstats->elements) < 0)
return -1;
if (libhammer_stats_btree_iterations(&bstats->iterations) < 0)
return -1;
if (libhammer_stats_btree_splits(&bstats->splits) < 0)
return -1;
if (libhammer_stats_btree_inserts(&bstats->inserts) < 0)
return -1;
if (libhammer_stats_btree_deletes(&bstats->deletes) < 0)
return -1;
if (libhammer_stats_btree_lookups(&bstats->lookups) < 0)
return -1;
if (libhammer_stats_btree_searches(&bstats->searches) < 0)
return -1;
return 0;
}
int
libhammer_io_stats(struct libhammer_io_stats *iostats)
{
if (libhammer_stats_undo(&iostats->undo) < 0)
return -1;
if (libhammer_stats_commits(&iostats->commits) < 0)
return -1;
if (libhammer_stats_inode_flushes(&iostats->inode_flushes) < 0)
return -1;
if (libhammer_stats_disk_write(&iostats->dev_writes) < 0)
return -1;
if (libhammer_stats_disk_read(&iostats->dev_reads) < 0)
return -1;
if (libhammer_stats_file_iopsw(&iostats->file_iop_writes) < 0)
return -1;
if (libhammer_stats_file_iopsr(&iostats->file_iop_reads) < 0)
return -1;
if (libhammer_stats_file_write(&iostats->file_writes) < 0)
return -1;
if (libhammer_stats_file_read(&iostats->file_reads) < 0)
return -1;
return 0;
}