Выплыл какой-то старый глюк.
Когда система закрывается, terminate вызывается для всех слотов где раньше были потоки. В том числе и для тех где потоков уже нет, по второму разу.
Новая модель ядра
Serge
Diamon что-то писал в одной из веток, про изменения в связи с прибиванием потоков - может вы где-то пересеклись в исправлениях?
Diamon что-то писал в одной из веток, про изменения в связи с прибиванием потоков - может вы где-то пересеклись в исправлениях?
Похоже что ошибка в 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
Там вообще весь код как-то странно устроен.
Изменения не мои и двухгодичной (или больше) давности, так что нет...Diamond что-то писал в одной из веток, про изменения в связи с прибиванием потоков - может вы где-то пересеклись в исправлениях?
Serge
Ага, именно так. Я так понимаю, ревизия 334 это корректно обходит?
Я поставил в terminate() проверку на dir_table. У незанятых слотов там 0. А как должен был работать этот код не понятно. Зачем прибавлять 5 и не к числу потоков а к номеру потока вызвавшего shutdown().
Сделал динамическое выделение PL 0 стека. Удалось загрузить с систему с 12Мб ОЗУ.
Serge
Замечательно.
А ты точно уверен, что было 12 Мб - это физическое или логическое ограничение?
Замечательно.
А ты точно уверен, что было 12 Мб - это физическое или логическое ограничение?
Запустил с 12 мб в qemu! Gmon показал 468 kb свободной памяти. Некоторые программы работают, некоторые нет - памяти не хватает.
Можно освободить ещё 2.5 Мб. 512Кб за счёт дыры по адресам 780000 - 800000. Это я уже сделал, скоро выложу. Остальное за счёт TSS и iomap. В карте памяти есть ещё дыры, возможно что удасться ещё ужаться. Ядро может спокойно влезть в 8 Мб и ещё останется место. Много места занимают потоки ICON. Надо будет сделать Desktop окно.
Хорошая идея. ICON еще плох тем, что при щелчке по иконке иконка закрывает часть окна, налезающего на нее. Это создает неприятное ощущение.Serge wrote:Можно освободить ещё 2.5 Мб. 512Кб за счёт дыры по адресам 780000 - 800000. Это я уже сделал, скоро выложу. Остальное за счёт TSS и iomap. В карте памяти есть ещё дыры, возможно что удасться ещё ужаться. Ядро может спокойно влезть в 8 Мб и ещё останется место. Много места занимают потоки ICON. Надо будет сделать Desktop окно.
Desktop окно в таком случае без соответствующих модификаций будет перекрывать все окна, как я понимаю
Victor
Правильно понимаешь Надо вносить изменения в оконную систему а дело это не скорое...
Правильно понимаешь Надо вносить изменения в оконную систему а дело это не скорое...
Не знаете почему при вызове функции 70.0 она возвращает 5 (файл не найден), хотя файл стопроцентно на диске есть. Причем когда эта функция входила в состав программы, все работало нормально. Теперь она находиться в DLL, он нормально загружается, возвращает правильные указатели на функции, все данные для функции подготавливаются верно, но она файл не находит.
Уточнение: проверка происходила в VMWare. Раздел FAT32. Пробовал и с /rd/1/ и с /hd0/1/.
Извиняюсь, сам разобрался - туплю, оказывается.
Who is online
Users browsing this forum: No registered users and 9 guests