Страница 4 из 6
Re: Клавиатурный буфер
Добавлено: 24 июл 2017, 16:34
seregin
Olej писал(а):seregin писал(а):с модулями решил!
Каким образом решил?
Как решил?
подключил пару библиотек
исправил на module_init в конце
и добавил в инициализацию модуля скобочку и return 0
Re: Клавиатурный буфер
Добавлено: 24 июл 2017, 16:38
seregin
может приведение типов? но чет не получается
Re: Клавиатурный буфер
Добавлено: 24 июл 2017, 17:14
Olej
seregin писал(а):Olej писал(а):seregin писал(а):с модулями решил!
Каким образом решил?
Как решил?
подключил пару библиотек
Модули ядра (как и ядро вообще) в принципе не могут использовать
библиотек. Никаких.
Может заголовочных файлов в #include ... ?
Каких?
P.S. Вы можете в обсуждениях
кода не рассказывать "на пальцах", а показывать код (или строки кода) цитированием (копированием)?
seregin писал(а):
исправил на module_init в конце
и добавил в инициализацию модуля скобочку и return 0
А это - показатель говённости того кода!
Re: Клавиатурный буфер
Добавлено: 24 июл 2017, 17:23
seregin
да, заголовочных файлов) init.h. module.h
Убрал ту часть кода на что он ругался, загрузил модуль, выдало сообщение ошибка сегментации
А вот dmesg
Re: Клавиатурный буфер
Добавлено: 24 июл 2017, 17:50
Olej
seregin писал(а):да, заголовочных файлов) init.h. module.h
Это вовсе не обязательно.
Строка с module.h там изначально есть:
А init.h не нужно, на него ссылка из других *.h уже есть.
Re: Клавиатурный буфер
Добавлено: 24 июл 2017, 18:25
Olej
seregin писал(а):
Убрал ту часть кода на что он ругался, загрузил модуль, выдало сообщение ошибка сегментации
"та часть кода на что он ругался"
- это:
В той китайской публикации которую вы показывали (чтобы не лазить в заголовки ядра):
Там найдёте:
Код: Выделить всё
struct urb {
...
struct usb_device *dev; // (in) pointer to associated device
...
}
Т.е. они
сдуру выполняют арифметику над указателем.
Вот так будет компилироваться:
Код: Выделить всё
...
#define x(y) ((void *)((uint64_t)(y)+PAGE_OFFSET))
...
struct urb *urbp = (struct urb *)x(i);
if( ( ( (uint64_t)urbp->dev % 0x400 ) == 0 ) &&
...
А почему оно слетает по SIGSEGV?
А это вы спрашивайте у тех умников, которые это писали
Re: Клавиатурный буфер
Добавлено: 24 июл 2017, 18:42
seregin
да, компилируется) у вас находит адрес?
Re: Клавиатурный буфер
Добавлено: 24 июл 2017, 20:29
Olej
seregin писал(а):да, компилируется) у вас находит адрес?
Да не может оно ничего находить, потому что там написаны выдумки, которые никто не проверял ... даже не компилировалось.
Re: Клавиатурный буфер
Добавлено: 24 июл 2017, 22:04
seregin
понял) скажите gпожалуйста, а как получить полный дамп /dev/mem? без пересборок ядра
У меня выдает до определенного адреса и пишет потом segmentation fault
Re: Клавиатурный буфер
Добавлено: 25 июл 2017, 01:12
Olej
Olej писал(а):В той китайской публикации которую вы показывали
Там есть ещё одно интересное место:
For a USB keyboard device, in particular, the keyboard buffer is part of the URB structure, in the field transfer_buffer. Unfortunately, the memory offset where the URB structure is placed is different every time the system restarts.
1). это относится только к USB клавиатуре
2). расположение клавиатурного буфера меняется от разу к разу при перезагрузке.
А по поводу кода (модуля) сказано в тексте:
The pseudocode for scanning the low memory addresses of a 32-bit x86 system is shown in Figure 3.
Это очень важно, что этот код создавался для 32 бит системы.