printk_hex_dump
时间: 2023-07-04 12:30:43 浏览: 66
`printk_hex_dump` 是一个用于打印内存中二进制数据的函数。它的函数原型如下:
```c
void printk_hex_dump(const char *level, const char *prefix_str, int prefix_type, int rows, int cols, const void *buf, size_t len, bool ascii);
```
它的参数含义如下:
- `level`:打印信息的级别,例如 `KERN_INFO`、`KERN_WARNING` 等。
- `prefix_str`:打印信息的前缀字符串。
- `prefix_type`:打印信息的前缀类型,可以是 `DUMP_PREFIX_NONE`、`DUMP_PREFIX_ADDRESS`、`DUMP_PREFIX_OFFSET` 等。
- `rows`:每行打印的字节数。
- `cols`:打印几行。
- `buf`:要打印的数据缓冲区的起始地址。
- `len`:要打印的数据的长度。
- `ascii`:是否同时打印 ASCII 码值。
`printk_hex_dump` 函数会将打印的信息输出到内核日志缓冲区,可以使用 `dmesg` 命令查看。
相关问题
printk_once
printk_once是一个宏定义,它的作用是在内核中只打印一次指定的日志信息。在引用中的宏定义中,它使用了一个静态变量__print_once来记录是否已经打印过该信息,如果没有打印过,则打印该信息并将__print_once设置为true,否则不做任何操作。在引用中的代码中,printk_once被用来打印一条日志信息,并且只会在第一次调用该函数时打印。
代码示例:
```c
#define printk_once(x...) ({ \
static bool __print_once; \
\
if (!__print_once) { \
__print_once = true; \
printk(x); \
} \
})
void my_function() {
printk_once(KERN_INFO "This message will only be printed once.\n");
}
```
DUMP_PREFIX_OFFSET 16 4 buf len 1
这是一个伪代码,表示使用 `printk_hex_dump` 函数打印数据缓冲区 `buf` 中的前 `len` 个字节,每行打印 16 个字节,打印 4 行数据,使用 `DUMP_PREFIX_OFFSET` 前缀类型打印偏移量。
具体的使用方法如下:
```c
printk_hex_dump(KERN_INFO, "", DUMP_PREFIX_OFFSET, 16, 4, buf, len, false);
```
这个函数会将打印结果输出到内核日志缓冲区中,可以使用 `dmesg` 命令查看。打印结果每行显示 16 个字节,前面以偏移量表示,例如:
```
00000000: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ................
00000010: 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................
00000020: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
00000030: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 0123456789:;<=>?
```
其中第一列是偏移量,第二列是十六进制数字,第三列是 ASCII 字符表示。这个例子中,因为最后一个参数是 `false`,所以不会打印 ASCII 字符表示。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)