• Steven Rostedt (VMware)'s avatar
    tcp: Export to userspace the TCP state names for the trace events · d7b850a7
    Steven Rostedt (VMware) authored
    The TCP trace events (specifically tcp_set_state), maps emums to symbol
    names via __print_symbolic(). But this only works for reading trace events
    from the tracefs trace files. If perf or trace-cmd were to record these
    events, the event format file does not convert the enum names into numbers,
    and you get something like:
    
    __print_symbolic(REC->oldstate,
        { TCP_ESTABLISHED, "TCP_ESTABLISHED" },
        { TCP_SYN_SENT, "TCP_SYN_SENT" },
        { TCP_SYN_RECV, "TCP_SYN_RECV" },
        { TCP_FIN_WAIT1, "TCP_FIN_WAIT1" },
        { TCP_FIN_WAIT2, "TCP_FIN_WAIT2" },
        { TCP_TIME_WAIT, "TCP_TIME_WAIT" },
        { TCP_CLOSE, "TCP_CLOSE" },
        { TCP_CLOSE_WAIT, "TCP_CLOSE_WAIT" },
        { TCP_LAST_ACK, "TCP_LAST_ACK" },
        { TCP_LISTEN, "TCP_LISTEN" },
        { TCP_CLOSING, "TCP_CLOSING" },
        { TCP_NEW_SYN_RECV, "TCP_NEW_SYN_RECV" })
    
    Where trace-cmd and perf do not know the values of those enums.
    
    Use the TRACE_DEFINE_ENUM() macros that will have the trace events convert
    the enum strings into their values at system boot. This will allow perf and
    trace-cmd to see actual numbers and not enums:
    
    __print_symbolic(REC->oldstate,
        { 1, "TCP_ESTABLISHED" },
        { 2, "TCP_SYN_SENT" },
        { 3, "TCP_SYN_RECV" },
        { 4, "TCP_FIN_WAIT1" },
        { 5, "TCP_FIN_WAIT2" },
        { 6, "TCP_TIME_WAIT" },
        { 7, "TCP_CLOSE" },
        { 8, "TCP_CLOSE_WAIT" },
        { 9, "TCP_LAST_ACK" },
        { 10, "TCP_LISTEN" },
        { 11, "TCP_CLOSING" },
        { 12, "TCP_NEW_SYN_RECV" })
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    Acked-by: default avatarSong Liu <songliubraving@fb.com>
    Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d7b850a7
tcp.h 7.36 KB