Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание сокета в модуле ядра линукс 2.6.x  (Прочитано 12035 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Estagus
Гость
« : 21-05-2004 10:14 » new

Есть проблема: сабж.  Я шокирован!
Мозги кончились (выкипели)...  :?
Может ктонить дать самый простой пример работающего (!!!) модуля ядра, в котором используется локальный сокет? (желательно под указанное ядро)

Огромная благодарность гарантированна...   Отлично
Спасибо.... Улыбаюсь
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 21-05-2004 11:42 » 

Посмотри в ядре исходники встроенного http-демона: linux/net/khttpd/ - это пример tcp сокета. Замечу, что в khttpd используется отдельный поток ядра. Вроде выглядит не намного сложнее чем userspace. Интерфейс у сокетов один - что unix, что inet. Посмотри еще include/net/sock.h

Правда, все это о 2.4.х
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Estagus
Гость
« Ответ #2 : 22-05-2004 07:49 » 

Спасибо. Кое что получилось...  Отлично
А теперь еще вопрос, на засыпку... :oops:
Как и где надо сделать, чтобы в моем модуле ядра 2.6.x можно было использовать libc.
А то делаешь #include <stdio.h> и т.п., а он их не видит...
Указание прямых путей не помогает...
  Вот такой я вот
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 24-05-2004 10:18 » 

Estagus, libc в ядре использовать не получится - не тот уровень. Нужно пользоваться встроенными в ядро ф-иями.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Estagus
Гость
« Ответ #4 : 25-05-2004 02:25 » 

Цитата: RXL
Estagus, libc в ядре использовать не получится - не тот уровень. Нужно пользоваться встроенными в ядро ф-иями.

Вообще то в модуле ядра, который будет загружаться/выгружаться когда уже система полностью загружена. Или так все равно не катит?
Записан
darkelf
Молодой специалист

ua
Offline Offline

« Ответ #5 : 25-05-2004 05:18 » 

Цитата: Estagus
Цитата: RXL
Estagus, libc в ядре использовать не получится - не тот уровень. Нужно пользоваться встроенными в ядро ф-иями.

Вообще то в модуле ядра, который будет загружаться/выгружаться когда уже система полностью загружена. Или так все равно не катит?

как Вы это себе представляете? Допустим Ваш модуль вызывает функцию fwrite(), которая вызывает write(), которая передает управление опять в Ваш модуль, и получается ядро зацикливается. Плюс ядро не линкуется с библиотеками, Если Вы вызываете какую-нибудь libxml, а откуда ее функции возьмутся в ядре?
Записан
Estagus
Гость
« Ответ #6 : 25-05-2004 05:52 » 

Цитата: darkelf
Цитата: Estagus
Цитата: RXL
Estagus, libc в ядре использовать не получится - не тот уровень. Нужно пользоваться встроенными в ядро ф-иями.

Вообще то в модуле ядра, который будет загружаться/выгружаться когда уже система полностью загружена. Или так все равно не катит?

как Вы это себе представляете? Допустим Ваш модуль вызывает функцию fwrite(), которая вызывает write(), которая передает управление опять в Ваш модуль, и получается ядро зацикливается. Плюс ядро не линкуется с библиотеками, Если Вы вызываете какую-нибудь libxml, а откуда ее функции возьмутся в ядре?


Спасибо. Теперь понятно... Улыбаюсь
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 25-05-2004 12:01 » 

Estagus, логичнее и правильнее прикладные программы писать в usermode-е, а в ядро помещать минимум того, что нельзя сделать в usermode-е: аппаратно зависимые компоненты, драйвера, и т.п. Это и проще отлаживать, и надежнее. Сбой программы в ядре часто приводит к kernel panic. Это можно сравнить с неожиданным пропадением питания.
Кстати, в исходниках 2.6.5 khttpd я не нашел - значит, наверно, решили, что это инородный компонент.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines