Я хотел бы найти макрос в c
/c++
который получает структуру typedef
и указатель на структуру в качестве входных данных и печатает весь ее контент следующим образом:
скажем, у меня есть структура с именем struct account
,
struct account {
int account_number;
char *first_name;
char *last_name;
float balance;
};
и я использую это так:
struct account my_account= {
.account_number = 321321,
.first_name = 0x12345678,
.last_name = 0,
.balance = 222 };
Я хочу макрос в linux kernel / c lanaguge, который выглядит так:
PRINT_STRUCT_CONTENT(struct_type, pointer)
и распечатать следующее:
my_account= {
account_number = 321321,
first_name = 0x12345678,
last_name = 0,
balance = 222
}
идея состоит в том, чтобы иметь вид dir
функция Python в ядре
Написать макрос, чтобы структурировать содержимое структуры
Ваш самый общий макрос C для печати значений переменных в разных типах
Ты можешь использовать print_hex_dump или же print_hex_dump_bytes
Пример:
struct mystruct *p;
print_hex_dump_bytes("mystruct: ", DUMP_PREFIX_ADDRESS, p, sizeof(*p));
Возможно, вы захотите взглянуть на событие трассировки ядра API. Это немного сложнее, чем простой printk
, но он динамически переключается и выполняет некоторую предварительную (-ier) печать. И все еще очень низкие накладные расходы.