Page 19 of 31

Posted: Fri Feb 09, 2007 2:42 pm
by Serge
Выплыл какой-то старый глюк.
Когда система закрывается, terminate вызывается для всех слотов где раньше были потоки. В том числе и для тех где потоков уже нет, по второму разу.

Posted: Fri Feb 09, 2007 2:53 pm
by Mario79
Serge
Diamon что-то писал в одной из веток, про изменения в связи с прибиванием потоков - может вы где-то пересеклись в исправлениях?

Posted: Fri Feb 09, 2007 8:50 pm
by Serge
Похоже что ошибка в checkmisc:

Code: Select all

    mov   edx,0x3040
    movzx ecx,byte [0xff00]
    add   ecx,5
  markz:
    mov   [edx+TASKDATA.state],byte 3
    add   edx,0x20
    loop  markz 
функция маркирует все слоты не проверяя заняты они или нет

Там вообще весь код как-то странно устроен.

Posted: Sat Feb 10, 2007 1:53 pm
by diamond
Diamond что-то писал в одной из веток, про изменения в связи с прибиванием потоков - может вы где-то пересеклись в исправлениях?
Изменения не мои и двухгодичной (или больше) давности, так что нет...
Serge
Ага, именно так. Я так понимаю, ревизия 334 это корректно обходит?

Posted: Sat Feb 10, 2007 2:18 pm
by Serge
Я поставил в terminate() проверку на dir_table. У незанятых слотов там 0. А как должен был работать этот код не понятно. Зачем прибавлять 5 и не к числу потоков а к номеру потока вызвавшего shutdown().

Posted: Sat Feb 17, 2007 1:35 pm
by Serge
Сделал динамическое выделение PL 0 стека. Удалось загрузить с систему с 12Мб ОЗУ.

Posted: Sun Feb 18, 2007 11:59 pm
by Mario79
Serge
Замечательно.
А ты точно уверен, что было 12 Мб - это физическое или логическое ограничение?

Posted: Mon Feb 19, 2007 12:40 am
by Heavyiron
Запустил с 12 мб в qemu! Gmon показал 468 kb свободной памяти. Некоторые программы работают, некоторые нет - памяти не хватает.

Posted: Mon Feb 19, 2007 5:27 am
by Serge
Можно освободить ещё 2.5 Мб. 512Кб за счёт дыры по адресам 780000 - 800000. Это я уже сделал, скоро выложу. Остальное за счёт TSS и iomap. В карте памяти есть ещё дыры, возможно что удасться ещё ужаться. Ядро может спокойно влезть в 8 Мб и ещё останется место. Много места занимают потоки ICON. Надо будет сделать Desktop окно.

Posted: Mon Feb 19, 2007 2:50 pm
by Dmitry the Sorcerer
Serge wrote:Можно освободить ещё 2.5 Мб. 512Кб за счёт дыры по адресам 780000 - 800000. Это я уже сделал, скоро выложу. Остальное за счёт TSS и iomap. В карте памяти есть ещё дыры, возможно что удасться ещё ужаться. Ядро может спокойно влезть в 8 Мб и ещё останется место. Много места занимают потоки ICON. Надо будет сделать Desktop окно.
Хорошая идея. ICON еще плох тем, что при щелчке по иконке иконка закрывает часть окна, налезающего на нее. Это создает неприятное ощущение.

Posted: Mon Feb 19, 2007 3:33 pm
by vectoroc
Desktop окно в таком случае без соответствующих модификаций будет перекрывать все окна, как я понимаю :)

Posted: Mon Feb 19, 2007 5:41 pm
by Serge
Victor
Правильно понимаешь :) Надо вносить изменения в оконную систему а дело это не скорое...

Posted: Mon Feb 26, 2007 3:55 pm
by YELLOW
Не знаете почему при вызове функции 70.0 она возвращает 5 (файл не найден), хотя файл стопроцентно на диске есть. Причем когда эта функция входила в состав программы, все работало нормально. Теперь она находиться в DLL, он нормально загружается, возвращает правильные указатели на функции, все данные для функции подготавливаются верно, но она файл не находит.

Posted: Mon Feb 26, 2007 4:03 pm
by YELLOW
Уточнение: проверка происходила в VMWare. Раздел FAT32. Пробовал и с /rd/1/ и с /hd0/1/.

Posted: Mon Feb 26, 2007 4:11 pm
by YELLOW
Извиняюсь, сам разобрался - туплю, оказывается. :oops: :)