Project

General

Profile

Actions

Diag » History » Revision 8

« Previous | Revision 8/16 (diff) | Next »
laforge, 12/17/2016 10:54 AM


Diag

FIXME

Acronyms

DCI Diag Consumer Interface

Child Pages

Subsystems

Logging

Logging works by so-called log-codes. The Log code identifies the source/category of the logged information. Log codes are 16bit unsigned integers.

Base Code Purpose
0x1000 CDMA 1x
0x4000 WCDMA
0x5000 GSM
0x6000 Location Based Services
0x7000 UMTS
0x8000 TDMA
0xA000 DTV
0xB000 APPS
0xB010 LTE (until 0xB1FF)
0xB400 WIMAX
0xC000 DSP
0xD000 TD-SCDMA (until 0xD1FF)
0xF000 LOG TOOLS

Kernel support

See Qualcomm_Kernel

Library

There is /usr/lib/libdiag.so.1 which is linked by virtually any Qualcomm or Quectel proprietary program running on the Linux in the Modem.

it offers the follwing symbols:


4af43a7c g    DF .text»·0000014c  Base        log_submit
4af4d128 g    DO .data»·000001d0  Base        pools
4af40578 g    DF .text»·0000000c  Base        diag_vote_md_real_time
4af45f54 g    DF .text»·000000b0  Base        DiagSvc_Free
4af42f98 g    DF .text»·000000ec  Base        diag_dci_get_real_time_status_proc
4af45278 g    DF .text»·00000080  Base        diagpkt_subsys_get_delayed_rsp_id
4af456f8 g    DF .text»·000001cc  Base        diagpkt_subsys_alloc_v2
4af3fed4 g    DF .text»·00000450  Base        diag_read_mask_file_list
4af4515c g    DF .text»·00000020  Base        diagpkt_subsys_get_cmd_code
4af436f8 g    DF .text»·00000024  Base        Diag_LSM_Event_DeInit
4af3cd80 g    DF .text»·00000174  Base        diag_wakelock_init
4af4ecf8 g    DO .data»·000001f4  Base        mask_file2
4b044b30 g    DO .bss»··00000004  Base        cleanup_mask
4af41f54 g    DF .text»·00000160  Base        diag_register_dci_client
4af4eeec g    DO .data»·000001f4  Base        mask_file
4af444e8 g    DF .text»·000000e8  Base        msg_send_var
4af458c4 g    DF .text»·000000ac  Base        diagpkt_subsys_alloc_v2_delay
4b044b5c g    DO .bss»··00000004  Base        log_to_memory
4af453f4 g    DF .text»·000000b8  Base        diagpkt_alloc
4b025b98 g    DO .bss»··00000004  Base        db_thread_initialized
4af3bacc g    DF .init»·00000000  Base        _init
4b044a28 g    DO .bss»··00000030  Base        stop_cond
4af41808 g    DF .text»·00000110  Base        diag_hdlc_toggle
4af3cf5c g    DF .text»·000000b0  Base        diag_wakelock_acquire
4b044b6c g    DO .bss»··00000004  Base        parser_state
4b044b60 g    DO .bss»··00000004  Base        num_bytes_read
4af43884 g    DF .text»·00000054  Base        log_update_dci_mask
4af40324 g    DF .text»·00000004  Base        send_mask_modem
4af4f310 g    DO .data»·00000004  Base        qsr4_db_file_fd
4b0448c8 g    DO .bss»··00000098  Base        qsr4_db_write_buf_pool
4af4342c g    DF .text»·0000005c  Base        event_update_mask
4af3c2b0 g    DF .text»·00000014  Base        mask_sync_initialize
4b042e00 g    DO .bss»··00001388  Base        file_name_curr
4af445d0 g    DF .text»·00000264  Base        msg_sprintf
4af4e910 g    DO .data»·000001f4  Base        mask_file_mdm2
4af435a8 g    DF .text»·000000f0  Base        event_report_payload
4af46088 g    DF .text»·00000098  Base        DiagSvc_Malloc_Init
4af42190 g    DF .text»·00000194  Base        diag_release_dci_client
4af3ccb0 g    DF .text»·00000054  Base        update_sync_mask
4af3f934 g    DF .text»·0000014c  Base        diag_send_socket_data
4af420b4 g    DF .text»·00000094  Base        diag_register_dci_stream_proc
4af45e68 g    DF .text»·000000ec  Base        DiagSvc_Malloc
4b044a58 g    DO .bss»··00000028  Base        buffer_init
4af4bfd8 g    DO .rodata»·······00000004  Base        msg_mask_tbl_size
4b025b8c g    DO .bss»··00000004  Base        curr_write_idx
4af46834 g    DF .text»·00000094  Base        diag_logger_flush
4b044aa8 g    DO .bss»··00000028  Base        pool0_buffers
4af43bc8 g    DF .text»·0000000c  Base        log_set_length
4b044b7c g    DO .bss»··00000001  Base        hdlc_disabled
4af4f314 g    DO .data»·00000028  Base        fd_qsr4_xml
4af4d394 g    DO .data»·000001f4  Base        qsr4_xml_file_name
4af45c30 g    DF .text»·00000238  Base        diagpkt_LSM_process_request
4af40680 g    DF .text»·0000000c  Base        diag_get_real_time_status
4af44d70 g    DF .text»·00000100  Base        Diag_LSM_Pkt_DeInit
4af40864 g    DF .text»·000004f4  Base        flush_buffer
4af40494 g    DF .text»·00000018  Base        diag_callback_send_data
4b044188 g    DO .bss»··00000200  Base        dci_cumulative_event_mask
4b044b44 g    DO .bss»··00000004  Base        dci_transaction_id
4af42940 g    DF .text»·0000010c  Base        diag_get_health_stats_proc
4b044b10 g    DO .bss»··00000018  Base        stop_mutex
4af42a4c g    DF .text»·0000002c  Base        diag_get_health_stats
4af43a68 g    DF .text»·00000014  Base        log_free
4af4eb04 g    DO .data»·000001f4  Base        mask_file_mdm
4af452f8 g    DF .text»·00000080  Base        diagpkt_subsys_reset_delayed_rsp_id
4af46418 g    DF .text»·00000210  Base        diag_logger_init
4af3c2c4 g    DF .text»·00000040  Base        dummy_handler
4af3f870 g    DF .text»·000000c4  Base        diag_send_data
4af488ac g    DF .text»·00000234  Base        diag_kill_qshrink4_threads
4af41b20 g    DF .text»·0000002c  Base        ts_get_lohi
4af45378 g    DF .text»·0000007c  Base        diagpkt_subsys_set_rsp_cnt
4af482b4 g    DF .text»·00000030  Base        diag_notify_parser_thread
4af42c88 g    DF .text»·000000f8  Base        diag_disable_all_logs
4af45a2c g    DF .text»·00000204  Base        diagpkt_commit
4b0238e4 g    DO .bss»··00000004  Base        proc_type
4af42670 g    DF .text»·00000160  Base        diag_log_stream_config
4af43c28 g    DF .text»·00000034  Base        log_status
4af4415c g    DF .text»·000000a4  Base        msg_send
4af3e4b0 g    DF .text»·00000470  Base        WriteToDisk
4af43d04 g    DF .text»·00000050  Base        Diag_LSM_Log_DeInit
4af4f2d4 g    DO .data»·00000004  Base        fd_dev
4af43084 g    DF .text»·0000000c  Base        diag_dci_get_real_time_status
4b0449c4 g    DO .bss»··00000032  Base        qsr4_db_cmd_req_buf
4af45694 g    DF .text»·00000064  Base        diagpkt_subsys_alloc
4af3cc64 g    DF .text»·0000004c  Base        get_sync_mask
4af425bc g    DF .text»·000000a8  Base        diag_get_dci_support_list_proc
4af40584 g    DF .text»·000000fc  Base        diag_get_real_time_status_proc
4b044af8 g    DO .bss»··00000018  Base        qsr4_read_db_mutex
4b044388 g    DO .bss»··000001f4  Base        dir_name
4af3d210 g    DF .text»·0000005c  Base        diag_set_socket_fd
4af4115c g    DF .text»·0000001c  Base        diag_switch_logging_proc
4af45124 g    DF .text»·0000000c  Base        diagpkt_get_cmd_code
4af4517c g    DF .text»·00000080  Base        diagpkt_subsys_get_status
4b044b58 g    DO .bss»··00000004  Base        in_read
4af43698 g    DF .text»·00000060  Base        Diag_LSM_Event_Init
4b044b48 g    DO .bss»··00000004  Base        diag_dci_error_type
4af42d80 g    DF .text»·000000f8  Base        diag_disable_all_events
4b044960 g    DO .bss»··00000064  Base        pid_file
4b044b70 g    DO .bss»··00000004  Base        qsr4_db_parser_thread_hdl
4b044b68 g    DO .bss»··00000004  Base        num_dci_proc
4b025b84 g    DO .bss»··00000004  Base        in_wait_for_peripheral_status
4b044b78 g    DO .bss»··00000004  Base        write_in_progress
4af44d34 g    DF .text»·0000003c  Base        Diag_LSM_Pkt_Init
4af4d328 g    DO .data»·00000004  Base        max_file_size
4af41a18 g    DF .text»·00000108  Base        ts_get
4af42b80 g    DF .text»·00000108  Base        diag_get_event_status
4af43bfc g    DF .text»·00000014  Base        log_set_timestamp
4b044b34 g    DO .bss»··00000004  Base        curr_read
4af43090 g    DF .text»·000000b4  Base        diag_register_dci_signal_data
4af45970 g    DF .text»·00000040  Base        diagpkt_shorten
4b025b90 g    DO .bss»··00000004  Base        curr_read_idx
4b044ad0 g    DO .bss»··00000028  Base        pool1_buffers
4af41d38 g    DF .text»·0000021c  Base        lookup_pkt_rsp_transaction
4b0238f0 g    DO .bss»··00000004  Base        diag_disable_console
4af4d320 g    DO .data»·00000004  Base        max_file_num
4af42324 g    DF .text»·00000298  Base        diag_send_dci_async_req
4af43c10 g    DF .text»·0000000c  Base        log_get_length
4af45130 g    DF .text»·0000000c  Base        diagpkt_set_cmd_code
4af451fc g    DF .text»·0000007c  Base        diagpkt_subsys_set_status
4af41744 g    DF .text»·000000c4  Base        diag_peripheral_buffering_drain_immediate
4b044770 g    DO .bss»··00000155  Base        event_mask
4af439b4 g    DF .text»·000000b4  Base        log_commit
4af4d324 g    DO .data»·00000004  Base        min_file_size
4b02394c g    DO .bss»··00000004  Base        gdwClientID
4af44200 g    DF .text»·000000b4  Base        msg_send_ts
4b044b74 g    DO .bss»··00000004  Base        read_thread_hdl
4af3d26c g    DF .text»·0000004c  Base        valid_token
4af41918 g    DF .text»·0000005c  Base        add_guid_to_qshrink4_header
4b03e240 g    DO .bss»··00004bc0  Base        msg_mask
4b0238f4 g    DO .bss»··00000028  Base        file_list_size
4af43bd4 g    DF .text»·0000001c  Base        log_shorten
4af45a18 g    DF .text»·00000014  Base        diagpkt_free
4af4f2d8 g    DO .data»·00000008  Base        fd_socket
4b044b54 g    DO .bss»··00000004  Base        flush_log
4af482e4 g    DF .text»·000002b4  Base        create_diag_qshrink4_db_parser_thread
4af3fb3c g    DF .text»·00000398  Base        diag_read_mask_file
4af43144 g    DF .text»·000000ac  Base        diag_deregister_dci_signal_data
4b044b64 g    DO .bss»··00000004  Base        num_dci_clients_event
4af4d358 g    DO .data»·0000003c  Base        proc_name
4af41d10 g    DF .text»·00000028  Base        diag_lsm_dci_deinit
4af3d00c g    DF .text»·000000b0  Base        diag_wakelock_release
4b025ba0 g    DO .bss»··000186a0  Base        read_buffer
4af4513c g    DF .text»·00000020  Base        diagpkt_subsys_get_id
4b04457c g    DO .bss»··000001f4  Base        peripheral_name
4af411a4 g    DF .text»·0000042c  Base        Diag_LSM_Init
4af415d0 g    DF .text»·00000174  Base        diag_configure_peripheral_buffering_tx_mode
4b044b38 g    DO .bss»··00000004  Base        curr_write
4af404ac g    DF .text»·00000018  Base        diag_callback_send_data_hdlc
4af448dc g    DF .text»·000000ac  Base        qsr_msg_send_1
4af44988 g    DF .text»·000000b4  Base        qsr_msg_send_2
4b044b3c g    DO .bss»··00000004  Base        db_write_thread_hdl
4af44bd4 g    DF .text»·00000024  Base        Diag_LSM_Msg_Init
4af44a3c g    DF .text»·000000bc  Base        qsr_msg_send_3
4af4d2f8 g    DO .data»·00000028  Base        token_list
4af3d148 g    DF .text»·00000054  Base        diag_has_remote_device
4af3f754 g    DF .text»·0000011c  Base        diag_register_remote_callback
4b025b88 g    DO .bss»··00000004  Base        in_write
4b02391c g    DO .bss»··00000028  Base        file_list
4af46120 g    DF .text»·00000238  Base        process_incoming_data
4af3d3d4 g    DF .text»·000002dc  Base        delete_log
4af3d6b0 g    DF .text»·00000e00  Base        log_to_device
4af4d354 g    DO .data»·00000004  Base        logging_mode
4af43bf0 g    DF .text»·0000000c  Base        log_set_code
4af454ac g    DF .text»·000001e8  Base        diagpkt_delay_commit
4b044b50 g    DO .bss»··00000004  Base        flush_in_progress
4af431f0 g    DF .text»·00000064  Base        diag_send_to_output
4af3d0bc g    DF .text»·00000008  Base        diag_get_max_channels
4af43c5c g    DF .text»·000000a8  Base        Diag_LSM_Log_Init
4af4f0e0 g    DO .data»·000001f4  Base        file_name_del
4b023944 g    DO .bss»··00000004  Base        uart_logging_proc
4af46004 g    DF .text»·00000084  Base        DiagSvc_Malloc_Exit
4af4d588 g    DO .data»·00001388  Base        output_dir
4af427d0 g    DF .text»·00000170  Base        diag_event_stream_config
4af4068c g    DF .text»·000001d8  Base        Diag_LSM_DeInit
4af44e70 g    DF .text»·000002b4  Base        diagpkt_tbl_reg
4af42e78 g    DF .text»·00000120  Base        diag_dci_vote_real_time
4b025b94 g    DO .bss»··00000004  Base        kill_thread
4b023948 g    DO .bss»··00000004  Base        count_written_bytes_1
4af44834 g    DF .text»·000000a8  Base        qsr_msg_send
4af434f4 g    DF .text»·000000b4  Base        event_report
4af4f30c g    DO .data»·00000004  Base        diag_fd
4af43488 g    DF .text»·0000006c  Base        event_update_dci_mask
4af42664 g    DF .text»·0000000c  Base        diag_get_dci_support_list
4af437d8 g    DF .text»·000000ac  Base        log_update_mask
4af48598 g    DF .text»·00000314  Base        parse_data_for_qsr4_db_file_op_rsp
4af4d32c g    DO .data»·00000028  Base        file_list_index
4b0238ec g    DO .bss»··00000004  Base        rename_file_names
4af3f694 g    DF .text»·000000c0  Base        diag_register_callback
4af41b84 g    DF .text»·0000018c  Base        diag_lsm_dci_init
4af404c4 g    DF .text»·000000b4  Base        diag_vote_md_real_time_proc
4af442b4 g    DF .text»·000000b4  Base        msg_send_1
4af44368 g    DF .text»·000000bc  Base        msg_send_2
4af44424 g    DF .text»·000000c4  Base        msg_send_3
4af3cf48 g    DF .text»·00000014  Base        diag_is_wakelock_init
4b044b4c g    DO .bss»··00000004  Base        disk_write_hdl
4af3d19c g    DF .text»·00000074  Base        diag_register_socket_cb
4af44c10 g    DF .text»·000000c0  Base        msg_update_mask
4af41974 g    DF .text»·00000014  Base        diag_set_peripheral_mask
4af438d8 g    DF .text»·000000dc  Base        log_alloc
4b044b40 g    DO .bss»··00000004  Base        dci_client_tbl
4af3cd04 g    DF .text»·0000007c  Base        do_mask_sync
4b044b7d g    DO .bss»··00000001  Base        write_qshrink_header
4af4f2e0 g    DO .data»·00000004  Base        fd_uart
4af44af8 g    DF .text»·000000dc  Base        qsr_msg_send_var
4b044b28 g    DO .bss»··00000008  Base        periph_info
4af468c8 g    DF .text»·00000074  Base        diag_logger_exit
4af3fa80 g    DF .text»·000000bc  Base        send_empty_mask
4b023954 g    DO .bss»··00000004  Base        gnDiag_LSM_Event_Initialized
4af459b0 g    DF .text»·00000068  Base        diagpkt_err_rsp
4af46628 g    DF .text»·0000020c  Base        diag_logger_write
4af42a78 g    DF .text»·00000108  Base        diag_get_log_status
4b0449f8 g    DO .bss»··00000030  Base        qsr4_read_db_cond
4b0238e8 g    DO .bss»··00000004  Base        rename_dir_name
4af3cef4 g    DF .text»·00000054  Base        diag_wakelock_destroy
4af42148 g    DF .text»·00000048  Base        diag_register_dci_stream
4af43c1c g    DF .text»·0000000c  Base        log_get_code
4af4f348 g    DO .data.rel.ro.local»····00000120  Base        msg_mask_tbl
4af44bf8 g    DF .text»·00000018  Base        Diag_LSM_Msg_DeInit
4af3d0c4 g    DF .text»·00000084  Base        to_integer
4af48e08 g    DF .fini»·00000000  Base        _fini
4af3d2b8 g    DF .text»·0000011c  Base        diag_get_peripheral_name_from_mask
4b044a80 g    DO .bss»··00000028  Base        count_written_bytes
4af41178 g    DF .text»·0000002c  Base        diag_switch_logging
4af4f2e4 g    DO .data»·00000028  Base        fd_md

Logging Service API

This is about sending log messages via the Diag interface.

Function Purpose
log_alloc(u16 code, len) Allocate a buffer + fill header
log_shorten(ptr, len) Shorten the length of a previously allocated buffer
log_commit(ptr) Send the log to diag
log_free(ptr) Free a buffer previously allocated with log_alloc()
log_submit(ptr) Convenience wrapper around log_alloc()/memcpy()/log_commit()
On the EC25, it seems only the following Linux programs use the avove API to generate logs via Diag:
  • /usr/bin/cnss_diag
  • /usr/bin/ftmdaemon
  • /usr/bin/mbimd
  • /usr/bin/test_diag

Diag Consumer Interface

This seems to be about implementing a program that consumes Diag events. You can register to certain events/masks and then receive the related information in call-backs.

Function Description
diag_lsm_dci_init() Initialize DCI subsystem of libdiag
diag_register_dci_client() Register a DCI client
diag_get_dci_support_list() Get list of peripherals supported
diag_register_dci_stream() Register call-backs for events and logs
diag_event_stream_config() Set up event streaming to the client
diag_log_stream_config() Specify array of requested log codes
diag_get_health_stats() Get statistics about missed/succeeded logs and events
diag_register_dci_signal_data() Request OS signal when DCI data is received
Files (0)

Updated by laforge over 7 years ago · 8 revisions

Add picture from clipboard (Maximum size: 48.8 MB)