From: Roger Pau Monné Date: Thu, 25 Jan 2018 11:28:47 +0000 (+0100) Subject: gcov: introduce hooks for the sysctl X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~696 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e6c271a6625277117aece29a061fd522f02a5588;p=xen.git gcov: introduce hooks for the sysctl So that other implementations of the sysctl can be added. Signed-off-by: Roger Pau Monné Acked-by: Jan Beulich Acked-by: Wei Liu --- diff --git a/xen/common/coverage/coverage.h b/xen/common/coverage/coverage.h new file mode 100644 index 0000000000..9991939b70 --- /dev/null +++ b/xen/common/coverage/coverage.h @@ -0,0 +1,22 @@ +#ifndef _XEN_COV_PRIV_H +#define _XEN_COV_PRIV_H + +#include + +struct cov_sysctl_ops { + uint32_t (*get_size)(void); + void (*reset_counters)(void); + int (*dump)(XEN_GUEST_HANDLE_PARAM(char), uint32_t *); +}; + +#endif + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/xen/common/coverage/gcov.c b/xen/common/coverage/gcov.c index 798032cbbb..8627ef3355 100644 --- a/xen/common/coverage/gcov.c +++ b/xen/common/coverage/gcov.c @@ -22,6 +22,7 @@ #include +#include "coverage.h" #include "gcov.h" /** @@ -209,6 +210,12 @@ static int gcov_dump_all(XEN_GUEST_HANDLE_PARAM(char) buffer, return ret; } +static const struct cov_sysctl_ops cov_ops = { + .get_size = gcov_get_size, + .reset_counters = gcov_reset_all_counters, + .dump = gcov_dump_all, +}; + int sysctl_cov_op(struct xen_sysctl_coverage_op *op) { int ret; @@ -216,7 +223,7 @@ int sysctl_cov_op(struct xen_sysctl_coverage_op *op) switch ( op->cmd ) { case XEN_SYSCTL_COVERAGE_get_size: - op->size = gcov_get_size(); + op->size = cov_ops.get_size(); ret = 0; break; @@ -227,14 +234,14 @@ int sysctl_cov_op(struct xen_sysctl_coverage_op *op) buf = guest_handle_cast(op->buffer, char); - ret = gcov_dump_all(buf, &size); + ret = cov_ops.dump(buf, &size); op->size = size; break; } case XEN_SYSCTL_COVERAGE_reset: - gcov_reset_all_counters(); + cov_ops.reset_counters(); ret = 0; break;