Diag » History » Revision 5
Revision 4 (laforge, 12/17/2016 10:33 AM) → Revision 5/16 (laforge, 12/17/2016 10:40 AM)
{{>toc}}
h1. Diag
h2. Acronyms
|DCI|Diag Consumer Interface|
h2. Child Pages
{{child_pages()}}
h2. Kernel support
See [[Qualcomm_Kernel#diag]]
h2. 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:
<pre>
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
</pre>
h3. 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()|
h3. 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.