Diag » History » Revision 7
Revision 6 (laforge, 12/17/2016 10:44 AM) → Revision 7/16 (laforge, 12/17/2016 10:48 AM)
{{>toc}} h1. Diag FIXME h2. Acronyms |DCI|Diag Consumer Interface| h2. Child Pages {{child_pages()}} h2. Subsystems h3. 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| 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()| 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@ 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.