summaryrefslogtreecommitdiffstats
path: root/hw/s390x/sclp.c
diff options
context:
space:
mode:
authorChristian Borntraeger2016-08-10 12:14:19 +0200
committerCornelia Huck2016-09-05 15:15:16 +0200
commit989fd865f5e306a0b1ff10713a678b1fc4cab08f (patch)
tree6835da8f271986f3ac1b67e38387080eb40edc3b /hw/s390x/sclp.c
parents390x/pci: assert zpci always existing (diff)
downloadqemu-989fd865f5e306a0b1ff10713a678b1fc4cab08f.tar.gz
qemu-989fd865f5e306a0b1ff10713a678b1fc4cab08f.tar.xz
qemu-989fd865f5e306a0b1ff10713a678b1fc4cab08f.zip
s390/sclp: cache the sclp device
With the current code a simple sclp command takes about 13000 ns The biggest part seems to be the resolver of the object model. By caching the sclp device the time for an sclp command goes down to 2500ns. Talking about real life scenarios, this change doubles the speed of the sclp console when sending single bytes outputs to /dev/console. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'hw/s390x/sclp.c')
-rw-r--r--hw/s390x/sclp.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index fca37f511e..540226c6df 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -26,7 +26,12 @@
static inline SCLPDevice *get_sclp_device(void)
{
- return SCLP(object_resolve_path_type("", TYPE_SCLP, NULL));
+ static SCLPDevice *sclp;
+
+ if (!sclp) {
+ sclp = SCLP(object_resolve_path_type("", TYPE_SCLP, NULL));
+ }
+ return sclp;
}
/* Provide information about the configuration, CPUs and storage */