1) queue (3) man-страница документирует некоторые очень полезные макросы в sys / queue.h, реализуя списки и хвостовые очереди.Этот заголовок также доступен в ядре.
Распределение памяти в ядре задокументировано на malloc (9) справочной странице.Обычно он похож на пользовательский уровень malloc, но с дополнительным параметром type , который полезен для поиска утечек памяти.Ваш код должен выглядеть следующим образом:
MALLOC_DEFINE(M_MYMALLOC, "mydata", "Some data");
struct foo {
SLIST_ENTRY(foo) chain;
};
struct foo *bar = malloc(1000, M_MYMALLOC, M_WAITOK);
SLIST_INSERT_HEAD(&head, bar, chain);
SLIST_REMOVE_HEAD(&head, chain);
free(var, M_MYMALLOC);
2) Трудно ответить на этот вопрос, не зная, что означает «группировка» в контексте вашего проекта.