1 /* SPDX-License-Identifier: BSD-3-Clause */ 2 /* Copyright(c) 2007-2022 Intel Corporation */ 3 /* $FreeBSD$ */ 4 /****************************************************************************** 5 * @file icp_adf_debug.h 6 * 7 * @description 8 * This header file that contains the prototypes and definitions required 9 * for ADF debug feature. 10 * 11 *****************************************************************************/ 12 #ifndef ICP_ADF_DEBUG_H 13 #define ICP_ADF_DEBUG_H 14 15 /* 16 * adf_proc_type_t 17 * Type of proc file. Simple for files where read funct 18 * prints less than page size (4kB) and seq type for files 19 * where read function needs to print more that page size. 20 */ 21 typedef enum adf_proc_type_e { 22 ADF_PROC_SIMPLE = 1, 23 ADF_PROC_SEQ 24 } adf_proc_type_t; 25 26 /* 27 * debug_dir_info_t 28 * Struct which is used to hold information about a debug directory 29 * under the proc filesystem. 30 * Client should only set name and parent fields. 31 */ 32 typedef struct debug_dir_info_s { 33 char *name; 34 struct debug_dir_info_s *parent; 35 /* The below fields are used internally by the driver */ 36 struct debug_dir_info_s *dirChildListHead; 37 struct debug_dir_info_s *dirChildListTail; 38 struct debug_dir_info_s *pNext; 39 struct debug_dir_info_s *pPrev; 40 struct debug_file_info_s *fileListHead; 41 struct debug_file_info_s *fileListTail; 42 void *proc_entry; 43 } debug_dir_info_t; 44 45 /* 46 * Read handle type for simple proc file 47 * Function is called only once and can print up to 4kB (size) 48 * Function should return number of bytes printed. 49 */ 50 typedef int (*file_read)(void *private_data, char *buff, int size); 51 52 /* 53 * Read handle type for sequential proc file 54 * Function can be called more than once. It will be called until the 55 * return value is not 0. offset should be used to mark the starting 56 * point for next step. In one go function can print up to 4kB (size). 57 * Function should return 0 (zero) if all info is printed or 58 * offset from where to start in next step. 59 */ 60 typedef int (*file_read_seq)(void *private_data, 61 char *buff, 62 int size, 63 int offset); 64 65 /* 66 * debug_file_info_t 67 * Struct which is used to hold information about a debug file 68 * under the proc filesystem. 69 * Client should only set name, type, private_data, parent fields, 70 * and read or seq_read pointers depending on type used. 71 */ 72 typedef struct debug_file_info_s { 73 char *name; 74 struct debug_dir_info_s *parent; 75 adf_proc_type_t type; 76 file_read read; 77 file_read_seq seq_read; 78 void *private_data; 79 /* The below fields are used internally by the driver */ 80 struct debug_file_info_s *pNext; 81 struct debug_file_info_s *pPrev; 82 void *page; 83 Cpa32U offset; 84 void *proc_entry; 85 } debug_file_info_t; 86 87 /* 88 * icp_adf_debugAddDir 89 * 90 * Description: 91 * Function used by subsystem to register a new 92 * directory under the proc filesystem 93 * 94 * Returns: 95 * CPA_STATUS_SUCCESS on success 96 * CPA_STATUS_FAIL on failure 97 */ 98 CpaStatus icp_adf_debugAddDir(icp_accel_dev_t *accel_dev, 99 debug_dir_info_t *dir_info); 100 101 /* 102 * icp_adf_debugRemoveDir 103 * 104 * Description: 105 * Function used by subsystem to remove an existing 106 * directory for which debug output may be stored 107 * in the proc filesystem. 108 * 109 */ 110 void icp_adf_debugRemoveDir(debug_dir_info_t *dir_info); 111 112 /* 113 * icp_adf_debugAddFile 114 * 115 * Description: 116 * Function used by subsystem to add a new file under 117 * the proc file system in which debug output may be written 118 * 119 * Returns: 120 * CPA_STATUS_SUCCESS on success 121 * CPA_STATUS_FAIL on failure 122 */ 123 CpaStatus icp_adf_debugAddFile(icp_accel_dev_t *accel_dev, 124 debug_file_info_t *file_info); 125 126 /* 127 * icp_adf_debugRemoveFile 128 * 129 * Description: 130 * Function used by subsystem to remove an existing file under 131 * the proc filesystem in which debug output may be written 132 * 133 */ 134 void icp_adf_debugRemoveFile(debug_file_info_t *file_info); 135 136 #endif /* ICP_ADF_DEBUG_H */ 137