| Function report | 
| Source Code: kernel\debug\kdb\kdb_io.c | Create Date:2022-07-28 11:39:40 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:kdb_read* This function reads a string of characters, terminated by* a newline, or by reaching the end of the supplied buffer,* from the current kernel debugger console device.* Parameters:* Returns:* Returns a pointer to the buffer containing the received
Proto:static char *kdb_read(char *buffer, size_t bufsize)
Type:char
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| char * | buffer | Address of character buffer to receive input characters. | 
| size_t | bufsize | size, in bytes, of the character buffer | 
| 200 | bufend = Address of character buffer to receive input characters. + size, in bytes, of the character buffer - 2 | 
| 207 | tab = 0 | 
| 214 | diag = kdbgetintenv("DTABCOUNT", & dtab_count) | 
| 215 | If diag Then dtab_count = 30 | 
| 218 | If len > 0 Then | 
| 220 | If *( Address of character buffer to receive input characters. + len - 1) == '\n' Then cp-- | 
| 225 | cp = '\0' | 
| 227 | poll_again : | 
| 232 | Case key == 8 | 
| 233 | If cp > Address of character buffer to receive input characters. Then | 
| 235 | No 3D Now!(tmpbuffer, cp, lastchar - cp) | 
| 236 | No 3D Now!(cp - 1, tmpbuffer, lastchar - cp) | 
| 238 | *--lastchar = '\0' | 
| 239 | --cp | 
| 240 | kdb_printf("\b%s \r", cp) | 
| 242 | cp = '\0' | 
| 243 | kdb_printf(kdb_prompt_str) | 
| 247 | Break | 
| 248 | Case key == 13 | 
| 249 | lastchar++ = '\n' | 
| 250 | lastchar++ = '\0' | 
| 251 | If Not KDB_STATE(KGDB_TRANS) Then | 
| 252 | KDB_STATE_SET(KGDB_TRANS) | 
| 255 | kdb_printf("\n") | 
| 257 | Case key == 4 | 
| 259 | No 3D Now!(tmpbuffer, cp + 1, lastchar - cp - 1) | 
| 260 | No 3D Now!(cp, tmpbuffer, lastchar - cp - 1) | 
| 261 | *--lastchar = '\0' | 
| 262 | kdb_printf("%s \r", cp) | 
| 264 | cp = '\0' | 
| 265 | kdb_printf(kdb_prompt_str) | 
| 269 | Break | 
| 270 | Case key == 1 | 
| 271 | If cp > Address of character buffer to receive input characters. Then | 
| 272 | kdb_printf("\r") | 
| 273 | kdb_printf(kdb_prompt_str) | 
| 276 | Break | 
| 277 | Case key == 5 | 
| 283 | Case key == 2 | 
| 284 | If cp > Address of character buffer to receive input characters. Then | 
| 285 | kdb_printf("\b") | 
| 286 | --cp | 
| 288 | Break | 
| 289 | Case key == 14 | 
| 290 | memset(tmpbuffer, ' ', strlen - Find the length of a string*@s: The string to be sized + (lastchar - Address of character buffer to receive input characters.)) | 
| 292 | *( tmpbuffer + strlen - Find the length of a string*@s: The string to be sized + lastchar - Address of character buffer to receive input characters. ) = '\0' | 
| 294 | kdb_printf("\r%s\r", tmpbuffer) | 
| 296 | *(lastchar + 1) = '\0' | 
| 297 | Return lastchar | 
| 298 | Case key == 6 | 
| 304 | Case key == 16 | 
| 305 | memset(tmpbuffer, ' ', strlen - Find the length of a string*@s: The string to be sized + (lastchar - Address of character buffer to receive input characters.)) | 
| 307 | *( tmpbuffer + strlen - Find the length of a string*@s: The string to be sized + lastchar - Address of character buffer to receive input characters. ) = '\0' | 
| 309 | kdb_printf("\r%s\r", tmpbuffer) | 
| 311 | *(lastchar + 1) = '\0' | 
| 312 | Return lastchar | 
| 313 | Case key == 9 | 
| 318 | p_tmp++ | 
| 321 | No 3D Now!(tmpbuffer, p_tmp, cp - p_tmp) | 
| 323 | p_tmp = strrchr - Find the last occurrence of a character in a string*@s: The string to be searched*@c: The character to search for | 
| 330 | count = kallsyms_symbol_complete* Parameters:* prefix_name prefix of a symbol name to lookup* max_len maximum length that can be returned* Returns:* Number of symbols which match the given prefix | 
| 332 | kdb_printf("\n%d symbols are found.", count) | 
| 333 | If count > dtab_count Then | 
| 334 | count = dtab_count | 
| 335 | kdb_printf(" But only first %d symbols will be printed.\nYou can change the environment variable DTABCOUNT.", count) | 
| 340 | kdb_printf("\n") | 
| 345 | If ret != -E2BIG Then kdb_printf("%s ", p_tmp) | 
| 347 | Else kdb_printf("%s... ", p_tmp) | 
| 351 | If i >= dtab_count Then kdb_printf("...") | 
| 353 | kdb_printf("\n") | 
| 354 | kdb_printf(kdb_prompt_str) | 
| 362 | kdb_printf("%s", cp) | 
| 367 | Break | 
| 368 | Default | 
| 371 | No 3D Now!(tmpbuffer, cp, lastchar - cp) | 
| 372 | No 3D Now!(cp + 1, tmpbuffer, lastchar - cp) | 
| 373 | *++lastchar = '\0' | 
| 375 | kdb_printf("%s\r", cp) | 
| 376 | ++cp | 
| 378 | cp = '\0' | 
| 379 | kdb_printf(kdb_prompt_str) | 
| 382 | Else | 
| 397 | If lastchar - Address of character buffer to receive input characters. >= 5 && strcmp(lastchar - 5, "$?#3f") == 0 Then | 
| 399 | kdb_gdb_state_pass(lastchar - 5) | 
| 401 | KDB_STATE_SET(DOING_KGDB) | 
| 404 | If lastchar - Address of character buffer to receive input characters. >= 11 && strcmp(lastchar - 11, "$qSupported") == 0 Then | 
| 406 | kdb_gdb_state_pass(lastchar - 11) | 
| 408 | KDB_STATE_SET(DOING_KGDB) | 
| 412 | Break | 
| 414 | Go to poll_again | 
| Name | Describe | 
|---|---|
| kdb_getstr | kdb_getstr* Print the prompt string and read a command from the* input device.* Parameters:* buffer Address of buffer to receive command* bufsize Size of buffer in bytes* prompt Pointer to string to use as prompt string* Returns: | 
| Source code conversion tool public plug-in interface | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |