Revision 910df89d monitor.c

b/monitor.c
74 74
    void *handler;
75 75
    const char *params;
76 76
    const char *help;
77
    union {
78
        void (*info)(Monitor *mon);
79
    } mhandler;
77 80
} mon_cmd_t;
78 81

  
79 82
/* file descriptors passed via SCM_RIGHTS */
......
283 286
{
284 287
    const mon_cmd_t *cmd;
285 288
    const char *item = qdict_get_try_str(qdict, "item");
286
    void (*handler)(Monitor *);
287 289

  
288 290
    if (!item)
289 291
        goto help;
......
295 297
    help_cmd(mon, "info");
296 298
    return;
297 299
 found:
298
    handler = cmd->handler;
299
    handler(mon);
300
    cmd->mhandler.info(mon);
300 301
}
301 302

  
302 303
static void do_info_version(Monitor *mon)
......
1816 1817
    {
1817 1818
        .name       = "version",
1818 1819
        .args_type  = "",
1819
        .handler    = do_info_version,
1820 1820
        .params     = "",
1821 1821
        .help       = "show the version of QEMU",
1822
        .mhandler.info = do_info_version,
1822 1823
    },
1823 1824
    {
1824 1825
        .name       = "network",
1825 1826
        .args_type  = "",
1826
        .handler    = do_info_network,
1827 1827
        .params     = "",
1828 1828
        .help       = "show the network state",
1829
        .mhandler.info = do_info_network,
1829 1830
    },
1830 1831
    {
1831 1832
        .name       = "chardev",
1832 1833
        .args_type  = "",
1833
        .handler    = qemu_chr_info,
1834 1834
        .params     = "",
1835 1835
        .help       = "show the character devices",
1836
        .mhandler.info = qemu_chr_info,
1836 1837
    },
1837 1838
    {
1838 1839
        .name       = "block",
1839 1840
        .args_type  = "",
1840
        .handler    = bdrv_info,
1841 1841
        .params     = "",
1842 1842
        .help       = "show the block devices",
1843
        .mhandler.info = bdrv_info,
1843 1844
    },
1844 1845
    {
1845 1846
        .name       = "blockstats",
1846 1847
        .args_type  = "",
1847
        .handler    = bdrv_info_stats,
1848 1848
        .params     = "",
1849 1849
        .help       = "show block device statistics",
1850
        .mhandler.info = bdrv_info_stats,
1850 1851
    },
1851 1852
    {
1852 1853
        .name       = "registers",
1853 1854
        .args_type  = "",
1854
        .handler    = do_info_registers,
1855 1855
        .params     = "",
1856 1856
        .help       = "show the cpu registers",
1857
        .mhandler.info = do_info_registers,
1857 1858
    },
1858 1859
    {
1859 1860
        .name       = "cpus",
1860 1861
        .args_type  = "",
1861
        .handler    = do_info_cpus,
1862 1862
        .params     = "",
1863 1863
        .help       = "show infos for each CPU",
1864
        .mhandler.info = do_info_cpus,
1864 1865
    },
1865 1866
    {
1866 1867
        .name       = "history",
1867 1868
        .args_type  = "",
1868
        .handler    = do_info_history,
1869 1869
        .params     = "",
1870 1870
        .help       = "show the command line history",
1871
        .mhandler.info = do_info_history,
1871 1872
    },
1872 1873
    {
1873 1874
        .name       = "irq",
1874 1875
        .args_type  = "",
1875
        .handler    = irq_info,
1876 1876
        .params     = "",
1877 1877
        .help       = "show the interrupts statistics (if available)",
1878
        .mhandler.info = irq_info,
1878 1879
    },
1879 1880
    {
1880 1881
        .name       = "pic",
1881 1882
        .args_type  = "",
1882
        .handler    = pic_info,
1883 1883
        .params     = "",
1884 1884
        .help       = "show i8259 (PIC) state",
1885
        .mhandler.info = pic_info,
1885 1886
    },
1886 1887
    {
1887 1888
        .name       = "pci",
1888 1889
        .args_type  = "",
1889
        .handler    = pci_info,
1890 1890
        .params     = "",
1891 1891
        .help       = "show PCI info",
1892
        .mhandler.info = pci_info,
1892 1893
    },
1893 1894
#if defined(TARGET_I386) || defined(TARGET_SH4)
1894 1895
    {
1895 1896
        .name       = "tlb",
1896 1897
        .args_type  = "",
1897
        .handler    = tlb_info,
1898 1898
        .params     = "",
1899 1899
        .help       = "show virtual to physical memory mappings",
1900
        .mhandler.info = tlb_info,
1900 1901
    },
1901 1902
#endif
1902 1903
#if defined(TARGET_I386)
1903 1904
    {
1904 1905
        .name       = "mem",
1905 1906
        .args_type  = "",
1906
        .handler    = mem_info,
1907 1907
        .params     = "",
1908 1908
        .help       = "show the active virtual memory mappings",
1909
        .mhandler.info = mem_info,
1909 1910
    },
1910 1911
    {
1911 1912
        .name       = "hpet",
1912 1913
        .args_type  = "",
1913
        .handler    = do_info_hpet,
1914 1914
        .params     = "",
1915 1915
        .help       = "show state of HPET",
1916
        .mhandler.info = do_info_hpet,
1916 1917
    },
1917 1918
#endif
1918 1919
    {
1919 1920
        .name       = "jit",
1920 1921
        .args_type  = "",
1921
        .handler    = do_info_jit,
1922 1922
        .params     = "",
1923 1923
        .help       = "show dynamic compiler info",
1924
        .mhandler.info = do_info_jit,
1924 1925
    },
1925 1926
    {
1926 1927
        .name       = "kvm",
1927 1928
        .args_type  = "",
1928
        .handler    = do_info_kvm,
1929 1929
        .params     = "",
1930 1930
        .help       = "show KVM information",
1931
        .mhandler.info = do_info_kvm,
1931 1932
    },
1932 1933
    {
1933 1934
        .name       = "numa",
1934 1935
        .args_type  = "",
1935
        .handler    = do_info_numa,
1936 1936
        .params     = "",
1937 1937
        .help       = "show NUMA information",
1938
        .mhandler.info = do_info_numa,
1938 1939
    },
1939 1940
    {
1940 1941
        .name       = "usb",
1941 1942
        .args_type  = "",
1942
        .handler    = usb_info,
1943 1943
        .params     = "",
1944 1944
        .help       = "show guest USB devices",
1945
        .mhandler.info = usb_info,
1945 1946
    },
1946 1947
    {
1947 1948
        .name       = "usbhost",
1948 1949
        .args_type  = "",
1949
        .handler    = usb_host_info,
1950 1950
        .params     = "",
1951 1951
        .help       = "show host USB devices",
1952
        .mhandler.info = usb_host_info,
1952 1953
    },
1953 1954
    {
1954 1955
        .name       = "profile",
1955 1956
        .args_type  = "",
1956
        .handler    = do_info_profile,
1957 1957
        .params     = "",
1958 1958
        .help       = "show profiling information",
1959
        .mhandler.info = do_info_profile,
1959 1960
    },
1960 1961
    {
1961 1962
        .name       = "capture",
1962 1963
        .args_type  = "",
1963
        .handler    = do_info_capture,
1964 1964
        .params     = "",
1965 1965
        .help       = "show capture information",
1966
        .mhandler.info = do_info_capture,
1966 1967
    },
1967 1968
    {
1968 1969
        .name       = "snapshots",
1969 1970
        .args_type  = "",
1970
        .handler    = do_info_snapshots,
1971 1971
        .params     = "",
1972 1972
        .help       = "show the currently saved VM snapshots",
1973
        .mhandler.info = do_info_snapshots,
1973 1974
    },
1974 1975
    {
1975 1976
        .name       = "status",
1976 1977
        .args_type  = "",
1977
        .handler    = do_info_status,
1978 1978
        .params     = "",
1979 1979
        .help       = "show the current VM status (running|paused)",
1980
        .mhandler.info = do_info_status,
1980 1981
    },
1981 1982
    {
1982 1983
        .name       = "pcmcia",
1983 1984
        .args_type  = "",
1984
        .handler    = pcmcia_info,
1985 1985
        .params     = "",
1986 1986
        .help       = "show guest PCMCIA status",
1987
        .mhandler.info = pcmcia_info,
1987 1988
    },
1988 1989
    {
1989 1990
        .name       = "mice",
1990 1991
        .args_type  = "",
1991
        .handler    = do_info_mice,
1992 1992
        .params     = "",
1993 1993
        .help       = "show which guest mouse is receiving events",
1994
        .mhandler.info = do_info_mice,
1994 1995
    },
1995 1996
    {
1996 1997
        .name       = "vnc",
1997 1998
        .args_type  = "",
1998
        .handler    = do_info_vnc,
1999 1999
        .params     = "",
2000 2000
        .help       = "show the vnc server status",
2001
        .mhandler.info = do_info_vnc,
2001 2002
    },
2002 2003
    {
2003 2004
        .name       = "name",
2004 2005
        .args_type  = "",
2005
        .handler    = do_info_name,
2006 2006
        .params     = "",
2007 2007
        .help       = "show the current VM name",
2008
        .mhandler.info = do_info_name,
2008 2009
    },
2009 2010
    {
2010 2011
        .name       = "uuid",
2011 2012
        .args_type  = "",
2012
        .handler    = do_info_uuid,
2013 2013
        .params     = "",
2014 2014
        .help       = "show the current VM UUID",
2015
        .mhandler.info = do_info_uuid,
2015 2016
    },
2016 2017
#if defined(TARGET_PPC)
2017 2018
    {
2018 2019
        .name       = "cpustats",
2019 2020
        .args_type  = "",
2020
        .handler    = do_info_cpu_stats,
2021 2021
        .params     = "",
2022 2022
        .help       = "show CPU statistics",
2023
        .mhandler.info = do_info_cpu_stats,
2023 2024
    },
2024 2025
#endif
2025 2026
#if defined(CONFIG_SLIRP)
2026 2027
    {
2027 2028
        .name       = "usernet",
2028 2029
        .args_type  = "",
2029
        .handler    = do_info_usernet,
2030 2030
        .params     = "",
2031 2031
        .help       = "show user network stack connection states",
2032
        .mhandler.info = do_info_usernet,
2032 2033
    },
2033 2034
#endif
2034 2035
    {
2035 2036
        .name       = "migrate",
2036 2037
        .args_type  = "",
2037
        .handler    = do_info_migrate,
2038 2038
        .params     = "",
2039 2039
        .help       = "show migration status",
2040
        .mhandler.info = do_info_migrate,
2040 2041
    },
2041 2042
    {
2042 2043
        .name       = "balloon",
2043 2044
        .args_type  = "",
2044
        .handler    = do_info_balloon,
2045 2045
        .params     = "",
2046 2046
        .help       = "show balloon information",
2047
        .mhandler.info = do_info_balloon,
2047 2048
    },
2048 2049
    {
2049 2050
        .name       = "qtree",
2050 2051
        .args_type  = "",
2051
        .handler    = do_info_qtree,
2052 2052
        .params     = "",
2053 2053
        .help       = "show device tree",
2054
        .mhandler.info = do_info_qtree,
2054 2055
    },
2055 2056
    {
2056 2057
        .name       = "qdm",
2057 2058
        .args_type  = "",
2058
        .handler    = do_info_qdm,
2059 2059
        .params     = "",
2060 2060
        .help       = "show qdev device model list",
2061
        .mhandler.info = do_info_qdm,
2061 2062
    },
2062 2063
    {
2063 2064
        .name       = "roms",
2064 2065
        .args_type  = "",
2065
        .handler    = do_info_roms,
2066 2066
        .params     = "",
2067 2067
        .help       = "show roms",
2068
        .mhandler.info = do_info_roms,
2068 2069
    },
2069 2070
    {
2070 2071
        .name       = NULL,

Also available in: Unified diff