Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Jul 24, 2019 2:22 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 67 posts ]  Go to page Previous 1 2 3 4 5 Next
Author Message
PostPosted: Fri Sep 02, 2011 7:33 pm 
ilya wrote:
А знаете у всех современых устройств есть прерывания, таймауты ваще не должны использоватся

Интересно является ли современным любой DVD привод, который трамвай ваще сломался ваще не генерирует прерывания при нажатии кнопки выдвижения лотка с диском.
ilya wrote:
2 клавы - 2 драйвера клавы

Угу, 640 Кб хватит всем.


Top
   
PostPosted: Fri Sep 02, 2011 8:29 pm 
Offline

Joined: Tue Jul 26, 2011 11:03 pm
Posts: 62
Quote:
Интересно является ли современным любой DVD привод, который трамвай ваще сломался ваще не генерирует прерывания при нажатии кнопки выдвижения лотка с диском.
нет не является потому как причина по которой он не вытесняется USB это невозможность порчи информации на диске без явно видимых следов и возможности замены информации.

Я пожалуй перефразирую мой предыдущий пост - А знаете у всех современых устройств есть прерывания и пропаганда таймаутов ваще не должна осуществлятся.


Top
   
PostPosted: Fri Sep 02, 2011 8:37 pm 
ilya wrote:
А знаете у всех современых устройств есть прерывания и пропаганда таймаутов ваще не должна осуществлятся.

Все равно не канает. От одного желания чтобы все было правильно с устройствами так не становится. Есть события которые приходится отлавливать именно с использованием периодических опросов. USB клавиатура и CD\DVD (я подозреваю что и Blu-Ray - наследственность она вещь трудно истребимая) приводы явное тому доказательство.


Top
   
PostPosted: Fri Sep 02, 2011 9:21 pm 
Offline

Joined: Tue Jul 26, 2011 11:03 pm
Posts: 62
Serge wrote:
3. Я считаю что имя диску должно назначать ядро, а не драйвер. Иначе непонятно как избежать коллизии имён.
Я впринципе согласен, только не имя а ID
У меня вопрос. Есть ф-ция AddDisk которую исполняет драйвер - каким образом ядро узнает что добавленый диск уникален?


Top
   
PostPosted: Wed Sep 07, 2011 7:24 pm 
Перенес часть сообщение в тему "Ночные" сборки KolibriOS


Top
   
PostPosted: Fri Sep 23, 2011 3:46 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Как продвигается разработка ?
Начал делать драйвер для ahci, примонтировал диск, на этом всё и закончилось.


Top
   
PostPosted: Fri Sep 23, 2011 9:38 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
В связи с работами по настройке нового сервера - никак. Сейчас вроде сервер наконец настроен.

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


Top
   
PostPosted: Tue Apr 10, 2012 4:25 am 
Offline

Joined: Mon Jan 16, 2012 5:58 pm
Posts: 50
На данный момент с устройствами хранения данных работают два контроллера AHCI и EHCI, для них нужно думать динамическое определение дисков, т.к. их можно менять во время работы. Файловые менеджеры должны получать от системы инфу о смене диска, система должна записать новый диск в общий массив с дисками или убрать от туда диск если например флешку вытащили. Причём диски не физические а логические. А программа проверять массив и обновлять экран.
Я в массив с дисками записываю тип в котором инфа о диске и туда же функции для работы с этим диском, благо в фасме для запуска функции нужен только её адрес и регистры забить нужной инфой. В массиве с логическими дисками идёт в основном инфа о файловой системе и адрес его физического диска.

Массива с физическими дисками у меня нету, я сраза при его появлении читаю первый сектор, смотрю его логические диски и читаю их первый сектор с инфой о файловой системе, создаю объект 'диск' и записываю туда инфу о файловой системе и ещё адрес функции чтения, записи сектора. У флешек и дисков функции чтения разные но я делаю одинаковые входные параметры и результат. На запись о диске у меня 128 байт, первый байт его тип файловой системы, а если он = 0, то это значит что дисков больше нету, если = 1 то запись пуста. Прохожу по дискам и добавляю их на экран по сообщению изменении в дисках.


Top
   
PostPosted: Tue Apr 10, 2012 10:04 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1331
Стас
Было бы интереснее лицезреть сам код, а не одни только комментарии к нему.


Top
   
PostPosted: Tue Apr 10, 2012 12:04 pm 
Offline

Joined: Mon Jan 16, 2012 5:58 pm
Posts: 50
Сам код чтения логических дисков(fat, ntfs) с физического и их записи в массив вам не пригодятся, у вас другие записи о дисках(не знаю какие), а например функции для контроллера AHCI EHCI(инициализация и чтения с них секторов) могу дать.


Top
   
PostPosted: Mon Apr 23, 2012 12:38 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Тем временем ревизия r2643 заканчивает первый этап плана. Заодно я нашла и исправила баг с разбалансированным стеком в get_free_FAT, появившийся в r74, из-за которого ядро падало при попытке добавления новых данных на полностью заполненный жёсткий диск.

Специально для нетерпеливых, жаждущих немедленного профита: r2644 содержит исходники драйвера, который по команде от управляющего приложения добавляет или удаляет временный диск указанного размера в памяти. В файловой системе диск появляется как /tmp#/1, где # - цифра от 0 до 9, назначаемая при создании. Скомпилированный драйвер и два консольных приложения для создания и удаления я прилагаю к посту. Все желающие могут заняться написанием GUI с рюшечками, команды драйвера описаны в самом начале исходников драйвера, за взаимодействие с драйвером отвечают системные функции 68.16 и 68.17.


Attachments:
File comment: Управляющие программы
tmpdisk_control.7z [1.25 KiB]
Downloaded 157 times
File comment: Драйвер
tmpdisk.obj [978 Bytes]
Downloaded 146 times

_________________
Сделаем мир лучше!
Top
   
PostPosted: Fri Apr 27, 2012 2:43 pm 
Начиная с r.2643-2644 производится фиктивная запись файлов на разделы FAT32. Предположительно записываются сектора с данными, а сектора с со служебной информацией FAT остаются не записанными. Следовательно записанный файл доступен только до перезагрузки. Шиндовс не видит эти файлы, Колибри после перезагрузки тоже.


Top
   
PostPosted: Fri Apr 27, 2012 7:42 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Да, именно так. Я не учла в r2643, что в заготовке для
Quote:
Дополнительная мера для повышения скорости работы — это сделать так чтобы служебные данные раздела и данные директорий - которые бывают нужны часто, а обновляются редко не выбивались из кэша новыми данными. Для этого планировалось разделить кэш на две неравны части — одну меньшую часть для служебных данных, другую большую часть для данных считываемых файлов.

старая процедура записи кэша сохраняла только одну из двух частей, так что её нужно вызывать дважды. r2653 чинит проблему.

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


Top
   
PostPosted: Mon Jul 01, 2013 7:34 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
r3742: я перевела на новую схему оставшиеся файловые системы жёстких дисков NTFS и EXT2, а также драйвера жёстких дисков /hd* и /bd*. Могут появиться глюки. FAT12 в двух экземплярах, рамдиск, дискеты и CD пока остаются на старой, нерасширяемой схеме.

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


Top
   
PostPosted: Thu Nov 21, 2013 7:44 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
r4273: я перевела на новую схему рамдиск, дискеты и объединила код FAT12 с остальными вариантами FAT. Могут появиться глюки. Жёсткие нерасширяемые зависимости остаются только у CD с собственным кэшем и iso-сколько-то-там-fs.
  • Рамдиск наконец-то получил возможность изменять размер. К сожалению, есть ещё одно наследие Menuet, мешающее полной функциональности: из-за фиксированной карты адресов память за пределами 1.44М уже используется под другие цели, поэтому рамдиск нельзя увеличить. Зато, если катастрофически не хватает памяти, теперь можно загружать рамдиск меньшего размера - лишняя зарезервированная память пойдёт в дело. Ядро определяет размер рамдиска по содержимому образа - размера файла образа оно не видит.
  • В качестве бесплатного бонуса на рамдиске может быть любая поддерживаемая файловая система. Хоть ntfs, если не нужна запись, хоть ext4. Хоть несколько разделов.
  • Сохранение рамдиска на дискету проверяет размер и сразу возвращает ошибку при несоответствии. Сохранение рамдиска в файл создаёт файл размера такого же, каков размер рамдиска. Размер дискеты полагается фиксированным 1440 Кб.
  • 58-й функции больше нет.
  • Дискеты используют тот же код кэша, что и жёсткие диски, так что автоматически кэшируется то, что нужно, с выбором размера кэша в зависимости от количества свободной памяти. Раньше для дискет кэшировались только корневой каталог и таблица FAT.
  • Политика обновления кэша дискеты такая же, как и раньше: если с момента последней операции прошло более 5 секунд, то ядро гасит мотор дисковода и считает кэш недействительным. В пределах 5 секунд перед каждой файловой операцией ядро дёргает бутсектор дискеты и сверяет метку с хранимой меткой; если они не совпадают, ядро считает кэш недействительным.
  • Вторая дискета, если есть, теперь называется /fd2/1 вместо /fd/2. /fd/2, как и для жёстких дисков, будет означать второй раздел, если кому-то в голову придёт крайне странная идея сделать MBR на дискете.
  • Я починила работу с дискетой в Bochs. Технические подробности: Bochs требует, чтобы после сброса и после команды RECALIBRATE система читала статус сброса и команды, это сбрасывает статус прерывания, без этого Bochs не хочет генерировать новые прерывания.

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 67 posts ]  Go to page Previous 1 2 3 4 5 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited