Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср ноя 22, 2017 2:02 pm

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




Начать новую тему  Ответить на тему  [ 16 сообщений ]  На страницу 1 2 След.
Автор Сообщение
 Заголовок сообщения: Вызов несуществующих функций
СообщениеДобавлено: Пт окт 14, 2016 8:49 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Сейчас при вызове некоторых системных функций возвращается -1, например,
при попытке вызвать SysFn44 http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Fcore%2Fsyscall.inc#line-145
undefined_syscall http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Fkernel.asm#line-5638 вернёт -1.
А некоторые другие возвращают 0, например, при попытке вызвать 68.5, 68.6, 68.7, 68.8, 68.9, 68.10 f68.fail http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Fcore%2Fmemory.inc#line-1213 вернёт 0.

С чем связано такое различие?


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Пт окт 14, 2016 10:24 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Я могу исправить ф68 на -1, если это принципиально.


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Пт окт 14, 2016 11:25 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Serge, ну, то есть, должно всё-таки -1 возвращаться?
Я не только про ф68, а вообще, например, SysFn74.5 sys_network.get_drv_name http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Fnetwork%2Fstack.inc#line-789


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Сб окт 15, 2016 5:11 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Цитата:
ну, то есть, должно всё-таки -1 возвращаться?
Вот без понятия. Может и есть где-то такое указание, я не знаю.


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Вс окт 16, 2016 3:19 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Serge, я просто думаю, может лучше в таких случаях делать всегда просто
Код:
        jmp   undefined_syscall
вместо, например,
Код:
        jmp      .fail
;;;;;;;;;;;;;;;;;
.fail:
        xor     eax, eax
        mov     [esp+32], eax
        ret
Это ведь короче будет, да и код понятнее станет.


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Вс окт 16, 2016 3:51 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
Тогда уж лучше сделать deprecated_syscall, который возвращает 0 на случай, если функция ещё где-то используется.


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Вс окт 16, 2016 4:04 pm 
Не в сети

Зарегистрирован: Вс авг 09, 2015 3:41 pm
Сообщения: 82
deprecated значит, что всё ещё работает как и работало, но имейте ввиду, что это ненадолго, мы даём вам время исправить свой код, который зависит от этой функции, а пока предупреждаем всех о том, что функция устарела. Такое поведение можно реализовать для устаревших функций, которые планируется в последующем удалить, например добавив вывод предупреждения на доску отладки. А те функции, которые уже удалены, тут уж само собой undefined_syscall.


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Вс окт 16, 2016 7:46 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
undefined значит, что такой функции никогда не было, и этот номер можно использовать для новой функции не беспокоясь о том, что какая-нибудь старая программа попытается использовать её не по назначению.


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Вс окт 16, 2016 7:59 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Pathoswithin писал(а):
undefined значит, что такой функции никогда не было
Ты ошибаешься, можешь посмотреть в том файлике http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Fcore%2Fsyscall.inc
Код:
      dd undefined_syscall       ; 6-deprecated OpenRamdiskFile
      dd undefined_syscall       ; 41- deprecated GetIrqOwner
      dd undefined_syscall       ; 42- deprecated ReadIrqData
      dd undefined_syscall       ; 44- deprecated ProgramIrqs
      dd undefined_syscall       ; 45- deprecated ReserveIrq and FreeIrq
      dd undefined_syscall       ; 52- deprecated Stack driver status
      dd undefined_syscall       ; 53- deprecated Socket interface
      dd undefined_syscall       ; 58-deprecated Common file system interface


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Вс окт 16, 2016 8:29 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
... и комментарий "deprecated". В любом случае, undefined_syscall не подходит.


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Ср окт 26, 2016 10:54 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
В memory.inc:
Код:
dd f68.fail ; moved to f68.24
Код:
dd f68.fail ; moved to f68.25
это возвратит 0, а не -1 как undefined_syscall.

В sysfuncs.txt до сих пор осталось
Цитата:
Function 68, subfunction 16 - load driver.
А что MSCOFF драйверы ещё поддерживаются?


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Чт окт 27, 2016 3:17 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1600
COFF-драйверы не поддерживаются, но 68.16 работает и даже используется во всех программах со звуком, если не считать звуком PC speaker.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Чт окт 27, 2016 11:49 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
И не только со звуком, а в любой программе, работающей непосредственно с драйвером.


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Пт окт 28, 2016 11:01 am 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Serge, а в чём тогда принципиальное отличие SysFn68.16 от SysFn68.21?
Судя по документации, в возможности указать "command line".


Вернуться к началу
 Заголовок сообщения: Re: Вызов несуществующих функций
СообщениеДобавлено: Пт окт 28, 2016 11:40 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Первая возвращает логический номер сервиса по его имени. Вторая явно загружает драйвер и потом возвращает лог.номер.


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

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


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

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


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

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