|
|
|
Какой самый простой способ написать функцию работающую в kernel-space в Linux?
|
|||
|---|---|---|---|
|
#18+
Какой самый простой способ написать функцию работающую в kernel-space в Linux, например, собственную реализацию mmap()? Куда её положить, и как её вызвать, чтобы она вызвалась именно в kernel-space? Т.е. hello world для kernel-space. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 16:45 |
|
||
|
Какой самый простой способ написать функцию работающую в kernel-space в Linux?
|
|||
|---|---|---|---|
|
#18+
Вася Уткин, Краткий ответ - простого способа нет :) Чуть подробнее: Юзерспейс не может напрямую вызывать функции в контексте ядра. mmap - это просто обертка в glibc над соответствующим syscall. В принципе, все явные переходы в ядро производятся через механизм syscall. У вас есть 3 варианта. 1) Добавить свой syscall который отображается в вашу функцию, и написать к нему обертку для юзерспейса 2) Использовать существующий syscall в котором задействуются обработчики событий для вызова вашей функции в качестве обработчика. 3) Если чисто для hello world, то напишите простейший модуль ядра в функции инициализации которого вызывайте ваш код. Запуск через insmod :) 1 требует патчировать ядро, соответственно вообще довольно сложно тестировать. 2 можно сделать с помощью модуля (например модуль экспортирует виртуальный файл, и файловые операции с ним мэпятся на ваши функции) 3 - простейший способ но чисто академический ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 20:40 |
|
||
|
Какой самый простой способ написать функцию работающую в kernel-space в Linux?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Сообщения смотреть в dmesg :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 20:49 |
|
||
|
Какой самый простой способ написать функцию работающую в kernel-space в Linux?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВася Уткин, Краткий ответ - простого способа нет :) ...как же тяжело жить вам там, в вашем линуксе ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 23:02 |
|
||
|
Какой самый простой способ написать функцию работающую в kernel-space в Linux?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Сообщения смотреть в dmesg :) Спасибо! А собирать по обычному? Makefilekernel_helloworld: main.o gcc -lm -O3 -o kernel_helloworld main.o main.o : main.c gcc = gcc -O3 -c main.c ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 23:15 |
|
||
|
Какой самый простой способ написать функцию работающую в kernel-space в Linux?
|
|||
|---|---|---|---|
|
#18+
egorychкак же тяжело жить вам там, в вашем линуксе ;)) Это еще не тяжело. См. ниже :) А вообще, можно подумать в Винде проще это сделать :) Вася УткинА собирать по обычному? Ага, щазз Makefile: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. И на компе должно быть скомпилировано ядро из исходников либо установлен пакет kernel-devel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 02:49 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1341139]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 510ms |

| 0 / 0 |
