В настоящее время я пишу модуль ядра, который использует несколько хэш-таблиц для хранения различных структур. Как я могу реализовать единую универсальную функцию, которая бы использовала имя хэш-таблицы, хеш-ключ и структуру для сохранения в качестве параметров и выполняла ли соответствующая операция хранилища? Вот моя хэш-таблица и определение структуры.Как создать универсальную функцию для определения имени хэш-таблицы и структуры как параметров в модуле ядра?
static DEFINE_HASHTABLE(count, 7);
struct mystruct {
int data ;
struct hlist_node my_hash_list ;
};
Вот мой магазин код (я, кажется, получают нулевую ошибку указателя, если я увеличиваем TEMP-> данные непосредственно вместо того, чтобы делать это мой окольный добавить и дель путь :()
struct mystruct *temp;
struct mystruct *first;
temp = kmalloc(sizeof(struct mystruct),GFP_KERNEL);
first = kmalloc(sizeof(struct mystruct),GFP_KERNEL);
hash = command;
hash_for_each_possible(count, temp, my_hash_list,hash){
first->data=temp->data+1;
printk("Count: %d\n",first->data);
hash_add(count, &(first->my_hash_list), hash);
hash_del(&(temp->my_hash_list));
return;
}
first->data=1;
hash_add(count, &(first->my_hash_list), hash);
Это можно сделать для хэш-таблицы count и структуры mystruct. Можно ли создать функцию модуля ядра для указателя-заполнителя для любой структуры и памяти kmalloc для этой структуры? Также как передать имя хеш-таблицы в качестве параметра?