Как распечатать на экране структуру и весь ее контент?

Я хотел бы найти макрос в 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 для печати значений переменных в разных типах

Есть ли макрос препроцессора C для распечатки структуры?

Написание цикла while в препроцессоре C

1

Решение

Ты можешь использовать print_hex_dump или же print_hex_dump_bytes
Пример:

struct mystruct *p;
print_hex_dump_bytes("mystruct: ", DUMP_PREFIX_ADDRESS, p, sizeof(*p));
2

Другие решения

Возможно, вы захотите взглянуть на событие трассировки ядра API. Это немного сложнее, чем простой printk, но он динамически переключается и выполняет некоторую предварительную (-ier) печать. И все еще очень низкие накладные расходы.

1

По вопросам рекламы [email protected]