Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Aug 20, 2019 7:23 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 16 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Fri Oct 14, 2016 8:49 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Сейчас при вызове некоторых системных функций возвращается -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.

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


Top
   
PostPosted: Fri Oct 14, 2016 10:24 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Я могу исправить ф68 на -1, если это принципиально.


Top
   
PostPosted: Fri Oct 14, 2016 11:25 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
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


Top
   
PostPosted: Sat Oct 15, 2016 5:11 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
ну, то есть, должно всё-таки -1 возвращаться?
Вот без понятия. Может и есть где-то такое указание, я не знаю.


Top
   
PostPosted: Sun Oct 16, 2016 3:19 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Serge, я просто думаю, может лучше в таких случаях делать всегда просто
Code:
        jmp   undefined_syscall
вместо, например,
Code:
        jmp      .fail
;;;;;;;;;;;;;;;;;
.fail:
        xor     eax, eax
        mov     [esp+32], eax
        ret
Это ведь короче будет, да и код понятнее станет.


Top
   
PostPosted: Sun Oct 16, 2016 3:51 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
Тогда уж лучше сделать deprecated_syscall, который возвращает 0 на случай, если функция ещё где-то используется.


Top
   
PostPosted: Sun Oct 16, 2016 4:04 pm 
Offline

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


Top
   
PostPosted: Sun Oct 16, 2016 7:46 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
undefined значит, что такой функции никогда не было, и этот номер можно использовать для новой функции не беспокоясь о том, что какая-нибудь старая программа попытается использовать её не по назначению.


Top
   
PostPosted: Sun Oct 16, 2016 7:59 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Pathoswithin wrote:
undefined значит, что такой функции никогда не было
Ты ошибаешься, можешь посмотреть в том файлике http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Fcore%2Fsyscall.inc
Code:
      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


Top
   
PostPosted: Sun Oct 16, 2016 8:29 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
... и комментарий "deprecated". В любом случае, undefined_syscall не подходит.


Top
   
PostPosted: Wed Oct 26, 2016 10:54 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
В memory.inc:
Code:
dd f68.fail ; moved to f68.24
Code:
dd f68.fail ; moved to f68.25
это возвратит 0, а не -1 как undefined_syscall.

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


Top
   
PostPosted: Thu Oct 27, 2016 3:17 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1620
COFF-драйверы не поддерживаются, но 68.16 работает и даже используется во всех программах со звуком, если не считать звуком PC speaker.

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


Top
   
PostPosted: Thu Oct 27, 2016 11:49 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
И не только со звуком, а в любой программе, работающей непосредственно с драйвером.


Top
   
PostPosted: Fri Oct 28, 2016 11:01 am 
Offline

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


Top
   
PostPosted: Fri Oct 28, 2016 11:40 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Первая возвращает логический номер сервиса по его имени. Вторая явно загружает драйвер и потом возвращает лог.номер.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 16 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited