Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Oct 19, 2021 11:22 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 259 posts ]  Go to page Previous 14 5 6 7 818 Next
Author Message
 Post subject:
PostPosted: Mon Jun 26, 2006 9:19 pm 
diamond
Еще вопросы:
4. А здесь у меня возникли сомнения, поскольку все процедуры используют для запуска область с адреса 0x90000. Мне кажется, могут возникнуть ситуации, когда еще одно приложение не освободило область, а другое приложение уже запущено - может получиться пересечение данных и все кердык...
5. Судя по коду fs_execute не учитывает, что размер сектора (физического сектора, а не логического кластера) может быть больше чем 512 байт. Отсюда вопрос, как мне прикручивать запуск файлов с CD к этой процедуре? Писать паралельную процедуру не хочется, да и не экономно получается. Что делать?


Top
   
 Post subject:
PostPosted: Mon Jun 26, 2006 10:05 pm 
Offline
User avatar

Joined: Fri Jan 27, 2006 3:06 pm
Posts: 1073
Поскольку появилась возможность работы с папками на рамдиске, может стоит обсудить дерево каталогов для колибри? Можно создать отдельную ветку. У кого какие предложения?


Top
   
 Post subject:
PostPosted: Tue Jun 27, 2006 10:11 am 
Offline

Joined: Wed May 25, 2005 8:52 am
Posts: 147
все либы - в папку lib, ресурсы и другие вспомогательные файлы приложений - в etc ...


Top
   
 Post subject:
PostPosted: Tue Jun 27, 2006 6:56 pm 
Heavyiron
willow
ИМХО такие вещи могут носить рекомендательный характер, потому что не обязательны к исполнению и любой пользователь может использовать такие названия, какие ему нравятся и понятны.
Но это опять же только ИМХО.


Top
   
 Post subject:
PostPosted: Thu Jun 29, 2006 10:02 am 
Offline

Joined: Wed May 25, 2005 8:52 am
Posts: 147
Тогда разных папок может появиться очень много. Конечно, рекомендательный характер


Top
   
 Post subject:
PostPosted: Thu Jun 29, 2006 2:31 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 693
Речь про структуру папок "по умолчанию" для официального дистрибутива, насколько я понимаю, а не о том, кому какие названия нравятся. И если в официальном дистрибутиве все программы скомпилированы так, чтобы использовать файлы из папки lib, а пользователь переименовал её в bibl, то как уж тут гарантировать работоспособность приложений.


Top
   
 Post subject:
PostPosted: Thu Jun 29, 2006 8:51 pm 
mike.dld
Можно сделать INI файл, где будут прописаны основные пути.


Top
   
 Post subject:
PostPosted: Fri Jun 30, 2006 4:46 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Quote:
1. Почему только 1024? ИМХО мало, надо хоть подогнать под размер сегмента тогда и сделать 4096 хотя бы.

Наоборот, это с запасом. Скажем, в Windows требуется, чтобы максимальная длина имени файла не превосходила MAX_PATH = 260 (кстати, на самом деле в NT-семействе можно создать файл с очень длинным именем, причём это даже документировано в описании CreateFile:
Quote:
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path.

- проверял, без проблем создаёт, пишет и потом таким же методом можно прочитать. Правда, стандартными средствами (Explorer/Far/TotalCommander) такой файл обработать нельзя, а Explorer и TC его даже удалить не могут! Far может. Впрочем, это к делу не относится. В 9x такие шуточки не пройдут.) В DOS, хотя там и короткие имена, вообще лимит 80 символов. Ограничения в *nix я с ходу не помню, но тоже этого порядка.
Quote:
3. Обнуляется только до конца сегмента или вся рабочая память запрошенная под приложение?

Это одно и то же, приложение размещается в одном сегменте. Новая модель ядра от Serge ещё в действие не вступила, но думаю, там будет обнуляться вся память, за исключением самого файла.
Quote:
4. А здесь у меня возникли сомнения, поскольку все процедуры используют для запуска область с адреса 0x90000. Мне кажется, могут возникнуть ситуации, когда еще одно приложение не освободило область, а другое приложение уже запущено - может получиться пересечение данных и все кердык...

Есть такой мьютекс - application_table_status. Код загрузки приложения должен захватить этот мьютекс и только после этого получит возможность менять системные структуры, к которым можно отнести и область по 0x90000.
Quote:
5. Судя по коду fs_execute не учитывает, что размер сектора (физического сектора, а не логического кластера) может быть больше чем 512 байт. Отсюда вопрос, как мне прикручивать запуск файлов с CD к этой процедуре? Писать паралельную процедуру не хочется, да и не экономно получается. Что делать?

fs_execute читает данные блоками по 0x200 байт. Размер сектора на CD, если не ошибаюсь, 0x800 байт. Размер кластера на HD переменный, но кратен размеру сектора 0x200. Процедура fs_HdExecute.DoRead читает очередной сектор, для чего ей приходится хранить текущий кластер и номер сектора в кластере. Аналогичная процедура для CD должна при каждом 4-м запросе считывать в буфер новый сектор и хранить номер блока в секторе. Буфер лучше использовать по адресу 0x90000, поскольку эта область охраняется вышеупомянутым мьютексом (для другого буфера придётся беспокоиться о сценарии, когда между двумя вызовами .DoRead вызывается, например, функция 70.0 и перезаписывает данные - так что придётся заново считывать этот сектор)

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject:
PostPosted: Fri Jun 30, 2006 4:51 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Heavyiron
Quote:
Поскольку появилась возможность работы с папками на рамдиске,

В 70-й функции - да, появилась. А вот остальные функции про неё не знают. Можешь попробовать создать на рамдиске папку и зайти туда mfar'ом или systree - забавные результаты (особенно для mfar). Переписывать приложения надо! Я свои - mtdbg,mtappack - переписал. @panel уже тоже модифицирована. А вот остальные...


Top
   
 Post subject:
PostPosted: Fri Jun 30, 2006 6:09 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Mario79
Поправка: можно использовать любой буфер, поскольку работа с CD охраняется ещё одним мьютексом, cd_reserve. Так что если в процессе запуска другое приложение вызовет (скажем) 70.0 на CD, оно подождёт.

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject:
PostPosted: Fri Jun 30, 2006 6:48 pm 
diamond
Я в 98SE создавал файл длинной в 265 символов. Создал в Explorer. Удалял в Windows Commander. Проблемы возникли при использовании VoptXP.
Quote:
fs_execute читает данные блоками по 0x200 байт. Размер сектора на CD, если не ошибаюсь, 0x800 байт. Размер кластера на HD переменный, но кратен размеру сектора 0x200. Процедура fs_HdExecute.DoRead читает очередной сектор, для чего ей приходится хранить текущий кластер и номер сектора в кластере. Аналогичная процедура для CD должна при каждом 4-м запросе считывать в буфер новый сектор и хранить номер блока в секторе. Буфер лучше использовать по адресу 0x90000, поскольку эта область охраняется вышеупомянутым мьютексом (для другого буфера придётся беспокоиться о сценарии, когда между двумя вызовами .DoRead вызывается, например, функция 70.0 и перезаписывает данные - так что придётся заново считывать этот сектор)

Хорошо теперь я понял, как сделать.


Top
   
 Post subject:
PostPosted: Fri Aug 18, 2006 4:41 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Добавлена функция 70, подфункция 3 - запись данных в существующий файл.
Кто-нибудь возражает против удаления устаревшей функции 58.3, работающей только с жёсткими дисками? К тому же недокументированной до недавнего времени?


Top
   
 Post subject:
PostPosted: Fri Aug 18, 2006 7:27 pm 
diamond
Если на 100% уверен, что не используется никакой программой, то удаляй.


Top
   
 Post subject:
PostPosted: Mon Aug 21, 2006 4:08 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Удалена подфункция 3 функции 58.
Добавлена подфункция 4 функции 70 - установка размера файла.

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject:
PostPosted: Mon Sep 04, 2006 3:22 am 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
Не знаю думал ли об этом кто-нибудь, но без файловых дескрипторов и всех вытекающих отсюда последствиях (в моём представлении это буферизация, режимы открытия файли... ) многие вещи становятся не реамыми или решаемыми через заднее место (возможно такая мысль может возникнуть только у программиста до мозга костей приспособленного к виндовс/линукс...)...
Это я всё кто тому, что это - ,имхо, очень нада. (запятые правильно раставил? а то русский совсем забыл :))


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 259 posts ]  Go to page Previous 14 5 6 7 818 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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