Andrew Cooper
2013-Mar-13 12:52 UTC
[PATCH 1 of 5 v4] common/sysctl: Introduce hypercall to query the console ring size
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> -- Changes since v2: * Rebase on top of coverage patches. * Reword hypercall comments. diff -r a6b81234b189 -r 89f3c6846f6b xen/common/sysctl.c --- a/xen/common/sysctl.c +++ b/xen/common/sysctl.c @@ -358,6 +358,10 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xe } break; + case XEN_SYSCTL_consoleringsize: + ret = console_ring_size(&op->u.consoleringsize); + break; + #ifdef TEST_COVERAGE case XEN_SYSCTL_coverage_op: ret = sysctl_coverage_op(&op->u.coverage_op); diff -r a6b81234b189 -r 89f3c6846f6b xen/drivers/char/console.c --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -226,6 +226,12 @@ long read_console_ring(struct xen_sysctl return 0; } +long console_ring_size(struct xen_sysctl_consoleringsize * op) +{ + op->size = conring_size; + return 0; +} + /* * ******************************************************* diff -r a6b81234b189 -r 89f3c6846f6b xen/include/public/sysctl.h --- a/xen/include/public/sysctl.h +++ b/xen/include/public/sysctl.h @@ -632,6 +632,14 @@ typedef struct xen_sysctl_coverage_op xe DEFINE_XEN_GUEST_HANDLE(xen_sysctl_coverage_op_t); +/* XEN_SYSCTL_consoleringsize */ +/* Get the size of the hypervisor console ring in bytes. */ +struct xen_sysctl_consoleringsize { + uint64_t size; /* OUT */ +}; +typedef struct xen_sysctl_consoleringsize xen_sysctl_consoleringsize_t; +DEFINE_XEN_GUEST_HANDLE(xen_sysctl_consoleringsize_t); + struct xen_sysctl { uint32_t cmd; #define XEN_SYSCTL_readconsole 1 @@ -653,6 +661,7 @@ struct xen_sysctl { #define XEN_SYSCTL_cpupool_op 18 #define XEN_SYSCTL_scheduler_op 19 #define XEN_SYSCTL_coverage_op 20 +#define XEN_SYSCTL_consoleringsize 21 uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */ union { struct xen_sysctl_readconsole readconsole; @@ -674,6 +683,7 @@ struct xen_sysctl { struct xen_sysctl_cpupool_op cpupool_op; struct xen_sysctl_scheduler_op scheduler_op; struct xen_sysctl_coverage_op coverage_op; + struct xen_sysctl_consoleringsize consoleringsize; uint8_t pad[128]; } u; }; diff -r a6b81234b189 -r 89f3c6846f6b xen/include/xen/console.h --- a/xen/include/xen/console.h +++ b/xen/include/xen/console.h @@ -12,6 +12,8 @@ struct xen_sysctl_readconsole; long read_console_ring(struct xen_sysctl_readconsole *op); +struct xen_sysctl_consoleringsize; +long console_ring_size(struct xen_sysctl_consoleringsize *op); void console_init_preirq(void); void console_init_postirq(void);
Andrew Cooper
2013-Apr-05 14:48 UTC
Re: [PATCH 1 of 5 v4] common/sysctl: Introduce hypercall to query the console ring size
On 13/03/13 12:52, Andrew Cooper wrote:> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>Keir/Jan: Ping - this is a hypervisor change. ~Andrew> > -- > Changes since v2: > * Rebase on top of coverage patches. > * Reword hypercall comments. > > diff -r a6b81234b189 -r 89f3c6846f6b xen/common/sysctl.c > --- a/xen/common/sysctl.c > +++ b/xen/common/sysctl.c > @@ -358,6 +358,10 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xe > } > break; > > + case XEN_SYSCTL_consoleringsize: > + ret = console_ring_size(&op->u.consoleringsize); > + break; > + > #ifdef TEST_COVERAGE > case XEN_SYSCTL_coverage_op: > ret = sysctl_coverage_op(&op->u.coverage_op); > diff -r a6b81234b189 -r 89f3c6846f6b xen/drivers/char/console.c > --- a/xen/drivers/char/console.c > +++ b/xen/drivers/char/console.c > @@ -226,6 +226,12 @@ long read_console_ring(struct xen_sysctl > return 0; > } > > +long console_ring_size(struct xen_sysctl_consoleringsize * op) > +{ > + op->size = conring_size; > + return 0; > +} > + > > /* > * ******************************************************* > diff -r a6b81234b189 -r 89f3c6846f6b xen/include/public/sysctl.h > --- a/xen/include/public/sysctl.h > +++ b/xen/include/public/sysctl.h > @@ -632,6 +632,14 @@ typedef struct xen_sysctl_coverage_op xe > DEFINE_XEN_GUEST_HANDLE(xen_sysctl_coverage_op_t); > > > +/* XEN_SYSCTL_consoleringsize */ > +/* Get the size of the hypervisor console ring in bytes. */ > +struct xen_sysctl_consoleringsize { > + uint64_t size; /* OUT */ > +}; > +typedef struct xen_sysctl_consoleringsize xen_sysctl_consoleringsize_t; > +DEFINE_XEN_GUEST_HANDLE(xen_sysctl_consoleringsize_t); > + > struct xen_sysctl { > uint32_t cmd; > #define XEN_SYSCTL_readconsole 1 > @@ -653,6 +661,7 @@ struct xen_sysctl { > #define XEN_SYSCTL_cpupool_op 18 > #define XEN_SYSCTL_scheduler_op 19 > #define XEN_SYSCTL_coverage_op 20 > +#define XEN_SYSCTL_consoleringsize 21 > uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */ > union { > struct xen_sysctl_readconsole readconsole; > @@ -674,6 +683,7 @@ struct xen_sysctl { > struct xen_sysctl_cpupool_op cpupool_op; > struct xen_sysctl_scheduler_op scheduler_op; > struct xen_sysctl_coverage_op coverage_op; > + struct xen_sysctl_consoleringsize consoleringsize; > uint8_t pad[128]; > } u; > }; > diff -r a6b81234b189 -r 89f3c6846f6b xen/include/xen/console.h > --- a/xen/include/xen/console.h > +++ b/xen/include/xen/console.h > @@ -12,6 +12,8 @@ > > struct xen_sysctl_readconsole; > long read_console_ring(struct xen_sysctl_readconsole *op); > +struct xen_sysctl_consoleringsize; > +long console_ring_size(struct xen_sysctl_consoleringsize *op); > > void console_init_preirq(void); > void console_init_postirq(void); > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel