• Li Zefan's avatar
    tracing/events: Add module tracepoints · 7ead8b83
    Li Zefan authored
    Add trace points to trace module_load, module_free, module_get,
    module_put and module_request, and use trace_event facility to
    get the trace output.
    
    Here's the sample output:
    
         TASK-PID    CPU#    TIMESTAMP  FUNCTION
            | |       |          |         |
        <...>-42    [000]     1.758380: module_request: fb0 wait=1 call_site=fb_open
        ...
        <...>-60    [000]     3.269403: module_load: scsi_wait_scan
        <...>-60    [000]     3.269432: module_put: scsi_wait_scan call_site=sys_init_module refcnt=0
        <...>-61    [001]     3.273168: module_free: scsi_wait_scan
        ...
        <...>-1021  [000]    13.836081: module_load: sunrpc
        <...>-1021  [000]    13.840589: module_put: sunrpc call_site=sys_init_module refcnt=-1
        <...>-1027  [000]    13.848098: module_get: sunrpc call_site=try_module_get refcnt=0
        <...>-1027  [000]    13.848308: module_get: sunrpc call_site=get_filesystem refcnt=1
        <...>-1027  [000]    13.848692: module_put: sunrpc call_site=put_filesystem refcnt=0
        ...
     modprobe-2587  [001]  1088.437213: module_load: trace_events_sample F
     modprobe-2587  [001]  1088.437786: module_put: trace_events_sample call_site=sys_init_module refcnt=0
    
    Note:
    
    - the taints flag can be 'F', 'C' and/or 'P' if mod->taints != 0
    
    - the module refcnt is percpu, so it can be negative in a
      specific cpu
    Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
    Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    LKML-Reference: <4A891B3C.5030608@cn.fujitsu.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    7ead8b83
kmod.c 14.4 KB