У меня проблема с распределением памяти - это пространство ядра Linux. Я создал связанный список с помощью двух структур ниже:Распределение динамической памяти в ядре ядра Linux
struct Node{
char *ptr;
struct Node *next;
};
struct List{
struct Node *head;
struct Node *tail;
};
Теперь, когда я пытаюсь выделить список-структуру [Изменено для отражения правильного кода]:
struct List *ll = kmalloc(sizeof(struct List), GFP_KERNEL)
я получаю:
error: Initializer element is not constant
Что я здесь делаю неправильно? Я хочу, чтобы добавить ссылки на Узлы в моем списке структуре, так бы я добавить их:
struct Node n* = kmalloc(sizeof(Node));
n -> ptr = "Blah";
n -> next = NULL;
ll -> head = n;
Я уверен, что заголовки ядра Linux имеют некоторые макросы для связанных списков ... См., например, [здесь] (http://kernelnewbies.org/FAQ/LinkedLists) –
Спасибо, я проверю это, если это не сработает. Я видел это раньше, но подумал, что легче самому закодировать его. C пугает меня! – Alex
Если вы хотите позже отправить свой код в ядро, вы должны использовать право * сейчас * правила поведения и кодирования ядра ... и если вы боитесь C, вы должны начать с кодирования приложений на уровне пользователя, а не код ядра. –