Я немного новичок в программировании ядра, поэтому прошу прощения за вопрос.По сути, я хочу отправить строку (char *) в модуль ядра для распечатки.Довольно просто
У меня есть следующее в коде уровня пользователя:
char *text = "some text.";
ioctl(fd,OUTPUT_TEST,text);
И внутри модуля есть:
char *text;
case OUTPUT_TEST:
copy_from_user(text,(char *)arg,sizeof(char*);
Однако текст остается нулевым.Разве это не должен быть указатель на строку символов?
Я еще больше запутался, потому что работает следующее:
На уровне пользователя:
typedef struct
{
int size;
char *text;
}Message;
int fd = open ("/proc/ioctl_test", O_RDONLY);
Message message;
message.text = "This message was sent via OCTL.";
message.size = strlen(message.text);
ioctl(fd,OUTPUT_TEST,message);
И в пространстве ядра:
copy_from_user(&message,(Message *)arg,sizeof(Message));
Это прекрасно работает.Я действительно смущен и хотел бы любую помощь, которую вы, ребята, могли бы предложить.