Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб сен 22, 2018 6:39 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 62 сообщения ]  На страницу 1 2 3 4 5 След.

Удалить 58 сис. функцию из ядра?
Да. 55%  55%  [ 27 ]
Нет. 8%  8%  [ 4 ]
Мне пофиг. 37%  37%  [ 18 ]
Всего голосов: 49
Автор Сообщение
 Заголовок сообщения: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Чт авг 26, 2010 2:36 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
В настоящее время 58 и 70 сис. функции выполняют схожие функции. 58 сис. функция досталась нам от MENUET.
Сейчас, все новые программы используют 70 сис. функцию.

Предлагаю удалить 58 сис. функцию, и больше не оборачиваться на совместимость.
Программы, у которых есть исходники, и они присутствуют на SVN будут переписаны на 70 сис. функцию.


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Чт авг 26, 2010 2:41 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Для информации: среди подфункций 58-й функции есть LBA-чтение с IDE-дисков 58.16, у которого отсутствует аналог в 70-й функции и которое используется программой hdread, исходники которой отсутствуют.

ЗЫ на всякий случай: лично мне пофиг на судьбу 58-й функции в целом и приложения hdread в частности, так и голосовал.


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Чт авг 26, 2010 3:43 pm 
Можно добавить такую-же подфункцию в функцию 70 если есть необходимость, так что я тоже проголосовал за третий вариант. Главное код работы с LBA не удалять.


Вернуться к началу
   
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Пт авг 27, 2010 5:50 am 
Не в сети
Аватара пользователя

Зарегистрирован: Ср янв 27, 2010 10:59 am
Сообщения: 269
Имхо, сначала нужно сделать аналог функции 58.12, и только потом уже удалять. Ибо удалить - самое легкое...

_________________
ушёл...


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Пт авг 27, 2010 6:58 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1292
Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите.
Когда-нибудь эту дырку придется так или иначе затыкать.

ИМХО имеет смысл сохранить LBA-сервис как опциональную подфункцию SysFn 70 для экспериментальных и встроенных версий ядра, отключив ее (условно-компилируемым блоком) в транке.
Кому надо - тот легко сможет подключить ее для собственных нужд.


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Пт сен 24, 2010 6:00 pm 
Не в сети

Зарегистрирован: Ср сен 15, 2010 7:22 pm
Сообщения: 101
А сделать так, чтобы функции 58 и 70 были совместимы между собой, а может быть просто были синонимами (в смысле подфункций) нельзя?

P.S.

Цитата: "Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите."

Если развивать систему в микроядерном направлении, то можно идти другим путём - проверять полномочия приложения выполнять тот или иной системный вызов (в смысле - из потенциально опасных).


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Пт сен 24, 2010 9:09 pm 
FireWall писал(а):
А сделать так, чтобы функции 58 и 70 были совместимы между собой, а может быть просто были синонимами (в смысле подфункций) нельзя?

Нельзя. Они не только отличаются номером функций подфункций. По сравнению с 70 функцией 58 вообще косорукий и одноногий инвалид. В 70 функции есть аналог VFS, 58 вообще не умеет возвращать директории в виде форматированного списка - она тупо возвращает содержимое либо файла либо папки в виде RAW данных. При работе с ней приложению (файловому менеджеру к примеру) приходилось самому разбираться со всей хитрой внутренней структурой каталогов FAT, про NTFS и Ext вообще речи не было на общесистемном уровне.


Вернуться к началу
   
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Пт сен 24, 2010 10:52 pm 
Не в сети

Зарегистрирован: Ср дек 26, 2007 5:09 am
Сообщения: 214
FireWall писал(а):
Если развивать систему в микроядерном направлении, то можно идти другим путём - проверять полномочия приложения выполнять тот или иной системный вызов (в смысле - из потенциально опасных).


К микроядерности это никакого отношения не имеет. В целом ряде древних систем с монолитным ядром системные вызовы делились на привилегированные и непривилегированные; первые были доступны ограниченному кругу задач (например, привилегированная задача могла убить любую задачу в системе, а непривилегированная -- только любую задачу своего же пользователя).


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Пт окт 01, 2010 5:46 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 976
В принципе аналог 58.12 вроде бы придумал.
viewtopic.php?p=29459#p29459
Только
art_zh писал(а):
Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите.

и я бы оставил эту возможность только драйверам, сделав экспорт соответствующих функций ядра.

Да и 58.12 вроде бы использует приложение hdview замечательного товарища Trans'а. Приложение не имеет исходников. Кто-нибудь может с ним связаться?


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Пт окт 01, 2010 10:13 am 
Asper
Цитата:
В принципе аналог 58.12 вроде бы придумал.
viewtopic.php?p=29459#p29459
Только
art_zh писал(а):
Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите.

и я бы оставил эту возможность только драйверам, сделав экспорт соответствующих функций ядра.

Можно сделать условную компиляцию. Правда этот вопрос надо еще проработать.
Цитата:
Да и 58.12 вроде бы использует приложение hdview замечательного товарища Trans'а. Приложение не имеет исходников. Кто-нибудь может с ним связаться?

Связаться вряд ли, но при желании можно переписать с нуля - ничего в ней сложного нет (учитывая наличие Box_Lib сейчас), только времени на все не хватает.


Вернуться к началу
   
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Чт окт 07, 2010 1:34 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 976
Вобщем 59 функция выглядит так:

Код:
syscall_LBA_read_write:
    cmp   [lba_read_enabled], 1
    je     @f
    mov   eax, 10   ; LBA access denied
    ret
 @@:

    test  edi, edi
    jnz   @f
    mov   eax, 7    ; No pointer to buffer
    ret
 @@:
    test  esi, esi
    jnz   @f
 .err_dev_name:
    mov   eax, 1    ; No pointer to device name
    ret
 @@:
    movzx eax, byte [esi+4]
    sub   al, '0'
    inc   al
    cmp   dword [esi], '/hd/'
    je     @f

    cmp   dword [esi], '/bd/'
    jne   .err_dev_name
    dec   al
    add   al, 0x80
 @@:
    mov   [hdpos], eax

    push  ebx edi
    mov   eax, ecx
    xchg  ebx, edi
    test  edi, edi
    jz     .read
    cmp   edi, 1
    je     .write

    pop   edi ebx
    mov   eax, 2    ; Unknown function
    ret

 .read:
    call  hd_read
    jmp   .out

 .write:
    call  hd_write
 .out:
    pop   edi ebx
    xor   eax, eax
    cmp   [hd_error], 0
    je     @f
    mov   eax, 11   ; Device error
 @@:
    ret


в syscall.inc добавил:
Код:
      dd syscall_LBA_read_write           ; 59-LBA read and write

Вложение:
Комментарий к файлу: Собранное ядро с сис. функцией 59
KERNEL.MNT.txt [73.04 КБ]
144 скачивания


Файл kernel.mnt.txt надо переименовать в kernel.mnt, форум блокирует "неизвестные" ему расширения.

Формат функции 59.

in:
eax = 59 ; номер функции
ebx = 0 или 1 ; номер подфункции: 0 - чтение, 1 - запись
ecx = номер блока для чтения/записи
edi = буфер данных для считывания/записи указанного блока (размером 512 байт)
esi = Путь к устройству (задаётся в формате 58 функции (например '/hd/2' или '/bd/1'))

out:
eax = код ошибки файловой системы

Программа считывающая MBR (винчестера или флешки) и опционально записывающая загрузочный сектор указанного устройства в файл /sys/bootsector.bin. Путь к устройству для считывания MBR зашито в коде программы (для смены устройства нужна перекомпиляция программы).
Вложение:
Комментарий к файлу: MBR reader
MBR_Reader.7z [9.89 КБ]
144 скачивания


P.S. Я по прежнему считаю, что этой функции быть не должно в "нормальном" ядре.


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Чт окт 07, 2010 3:01 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср янв 27, 2010 10:59 am
Сообщения: 269
Я за то, чтобы такая функция была в официально в ядре. Всё равно нету никакого ограничения доступа. Может просто добавить функцию включения/выключения возможности прямого доступа к диску?

_________________
ушёл...


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Чт окт 07, 2010 3:23 pm 
Зачем функцию? Можно сделать компиляцию по умолчанию без этой функции, а при необходимости компилировать с функцией.
Цитата:
Всё равно нету никакого ограничения доступа.

Неверное размышление. Выражаясь иносказательно - если всем разрешено носить личное оружие это не значит, что любому должна быть доступна атомная бомба. А такая функция по умолчанию - это атомная бомба для данных жесткого диска.


Вернуться к началу
   
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Чт окт 07, 2010 4:06 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср янв 27, 2010 10:59 am
Сообщения: 269
А может добавить в ядро диалог (только не смейтесь):
Код:
Программа XYZ пытается получить прямой доступ к диску "/hd0/1". Разрешить?
{Да} {Нет}

_________________
ушёл...


Вернуться к началу
 Заголовок сообщения: Re: Удаление 58 сис. функции из ядра.
СообщениеДобавлено: Чт окт 07, 2010 4:30 pm 
Падсталом... :lol:
Виста+Семерка - кошмарим юзера! :mrgreen:


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 62 сообщения ]  На страницу 1 2 3 4 5 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB