Я пытаюсь выделить память в ядре Linux с помощью kmalloc. У меня есть структура, разработанная, как показано ниже:
struct st_fetch_point {
struct sk_buff *end_pkt ;
struct sk_buff *start_pkt ;
struct sk_buff *current_pkt ;
struct st_fetch_point *next_fortp ;
struct st_fetch_point *next_consec ;
};
Я создал новую структуру типа st_fetch_point и пытаюсь выделить память и присвоить значения указателям на элементы следующим образом:
struct st_fetch_point *first_fetch_point;
first_fetch_point = kmalloc((sizeof(struct st_fetch_point)), GFP_ATOMIC);
if (!first_fetch_point)
return -ENOMEM;
skb = tcp_send_head(meta_sk);
first_fetch_point->start_pkt = skb;
first_fetch_point->current_pkt = skb;
first_fetch_point->end_pkt = NULL;
first_fetch_point->next_fortp = NULL;
first_fetch_point->next_consec = NULL;
Но похоже, что ядро зависает каждый раз, когда дело доходит до строки выполнения kmalloc (). Я работаю над Ubuntu 14.04 и действительно в исправлении. Я проверил файлы syslog и kernlog и не нашел никаких необычных сообщений, связанных с зависанием. Это проблема с методом выделения kmalloc ()?