Как я могу решить ошибку "элемент инициализатора не является константой" в C в ядре Linux - PullRequest
0 голосов
/ 29 ноября 2018

Я написал следующий код на C в Linux, чтобы взять транспонирование матрицы, размеры которой взяты в качестве аргумента командной строки.Но когда я пытаюсь сделать (скомпилировать) этот код, я получаю следующую ошибку:

error mesege

кто-нибудь скажет мне, как решить эту ошибку, пожалуйста?

Заранее спасибо

#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/stat.h>
#include <linux/proc_fs.h>
#include <linux/slab.h>

/*---------------------------------------------------------*/
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Taking the transpoze of matrix");
MODULE_AUTHOR("Magenta");

int Row = 1 ;
int Column = 2 ;

module_param(Row, int, 0000) ;
module_param(Column, int, 0000) ;

int *MemoryBlock = kmalloc(Column * Row * sizeof(int), GFP_KERNEL) ;

/*if(MemoryBlock == NULL)
{
  printk("Error!! memory not allocated") ;
  exit(1) ; //Exit Failure . 
}*/

static int __init hello_5_init(void)
{ 
 return 0 ;
}
static void __exit hello_5_exit(void)
{ 
}

module_init(hello_5_init);
module_exit(hello_5_exit);

1 Ответ

0 голосов
/ 29 ноября 2018

Вы пытаетесь запустить код вне функции.Это недопустимо.

Переместить выделение в функцию init:

int *MemoryBlock = NULL;
...
static int __init hello_5_init(void)
{ 
 MemoryBlock  = kmalloc(Column * Row * sizeof(int), GFP_KERNEL) ;
 return 0 ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...