Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Nov 19, 2019 8:31 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 913 posts ]  Go to page Previous 155 56 57 58 5961 Next
Author Message
 Post subject: Re: Eolite
PostPosted: Wed Mar 21, 2018 6:57 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5066
Пара замечаний:
1. Сейчас уже можно с небольшой переделкой запилить иконки 32х32 с видом плитка.
2. Я перевожу настройки своих программ на функцию GetIni() которая вначале ищет .ini файл в /kolibrios/settings/ если находит - работает с ним, нет, с тем что в /sys/settings/
Следствие из этого изменения: все файлы настроект С-- переезжают в /settings/, т.е. Eolite.ini и pixie.ini.
Нужно для того, чтобы мои настройки хранились на жестком без необходимости постоянного и нудного пересохранения образа, который я потом все развно заменяю на latest_img. Вообще нужно данную функцию додумать, это так временный хак.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: Eolite
PostPosted: Mon Mar 26, 2018 5:56 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5066
Я уже давно хотел приобрести себе олдскульный ноутбук и потому периодически мониторил olx.ua (на сколько я понимаю в России есть аналогичнй ресурс Авито). Старые ноутбуки товар специфичный: их цена до определенного момента падает-падает перехотя в категорию "старье", а потом стремительно летит вверх в категорию "раритет". Особенно, если ноутбук в хорошем состоянии, что редкость для железки 20-летней давности.

Так что я 3 месяца мониторил рынок, пока мне не улыбнулась удача и я не купил Toshiba Satellite 2520CDS.
Attachment:
toshiba_2520cds.jpg
toshiba_2520cds.jpg [ 39.89 KiB | Viewed 3516 times ]
Параметры:
- 300MHz AMD K6-2
- RAM 32Mb
- IDE 3.0 GB
- Windows 98
- S3 ViRGE/MX 2Mb
- 13.0" DSTN
- USB 1.0
- PCMCIA

Повезло еще и в том, что CD оказался рабочим, хоть я и намудохался пока записал диск в формате, который он понял. Если бы не CD пришлось бы мудохаться с дискетами, т.к. USB в Window 98 не имел драйверов на флешку, а LAN (RJ45) там нет. Я думаю позже сделаю обзор на данный ноутбук.

Ближе к сути, Колибри на нем прекрасно заработала! И вместе с ней заработали USB флешки, которые ни в какую не хотели подниматься в WIN98. Можно было переносить информацию не тратя CD-диски!
...И тут вылезла проблема с Eolite'ом, который не умел копировать файлы размером больше ОЗУ, а ее зесь напомню всего 32 Мб.

Так что встречайте #7210 в которой Eolite 3.85 умеет копировать поблочно (4Мб) и еще исправлено две маленькие и одна критичная ошибка (тоже связанная с копированием).

_________________
Через тернии к звездам


Top
   
 Post subject: Re: Eolite
PostPosted: Mon Mar 26, 2018 7:17 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Кто то недавно писал, про не поддерживаемые инструкции на АМД К6 ?


Top
   
 Post subject: Re: Eolite
PostPosted: Mon Mar 26, 2018 10:16 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5066
Там действительно некоторые программы падают, из тех что я видел были только некоторые 3D и 2D демки.
А вот что не работает - так это как оказалось запись на HDD, да и чтение папки иногда падает. Буду репортить.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: Eolite
PostPosted: Tue Mar 27, 2018 12:53 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Leency wrote:
Там действительно некоторые программы падают, из тех что я видел были только некоторые 3D и 2D демки.
А вот что не работает - так это как оказалось запись на HDD, да и чтение папки иногда падает. Буду репортить.

Судя по попыткам использования уже AVX в ядре, нужно будет создавать кастомную сборку системы....


Top
   
 Post subject: Re: Eolite
PostPosted: Tue Mar 27, 2018 12:58 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
Leency
Умеет копировать поблочно или всегда копирует поблочно? А то в большинстве случаев 4Мб это маловато.


Top
   
 Post subject: Re: Eolite
PostPosted: Tue Mar 27, 2018 5:34 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 254
Pathoswithin wrote:
Leency
Умеет копировать поблочно или всегда копирует поблочно? А то в большинстве случаев 4Мб это маловато.

Есть же в системе ф-ция определения оперативной памяти?


Top
   
 Post subject: Re: Eolite
PostPosted: Tue Mar 27, 2018 7:50 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5066
Pathoswithin
Именно умеет. Сейчас идет проверка сколько Озу, если ее не хватает, то копирует поблочно иначе целыми файлами. 4 мб сейчас захардкожено, но это нужно переделать на высчитывание оптимального размера для копирования. Грубо говоря даже так будет ок:
Block=4mb
If getfrderam>80mb then block=32mb
Что думаете?

Паша, есть.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: Eolite
PostPosted: Tue Mar 27, 2018 9:44 pm 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 142
А может всегда копировать поблочно? Перед началом копирования определить размер блока как некоторую часть от доступной памяти, скажем 20% или 30%.


Top
   
 Post subject: Re: Eolite
PostPosted: Tue Mar 27, 2018 10:55 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Leency wrote:
Pathoswithin
Именно умеет. Сейчас идет проверка сколько Озу, если ее не хватает, то копирует поблочно иначе целыми файлами. 4 мб сейчас захардкожено, но это нужно переделать на высчитывание оптимального размера для копирования. Грубо говоря даже так будет ок:
Block=4mb
If getfrderam>80mb then block=32mb
Что думаете?

Для копирования в шелл, я брал 1Мб но не более половины свободной памяти.
http://websvn.kolibrios.org/filedetails ... 2Fcmd_cp.c :81

от большего увеличения особой выгоды по скорости не заметил.

Рейды по 64кб блоки, а вот для SSD там может быть и 2Мб - наверное надо начинать с этого размера и более, а потом ограничиваться свободной памятью.


Top
   
 Post subject: Re: Eolite
PostPosted: Wed Apr 18, 2018 5:13 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5066
Eolite 3.9
Большие иконки подвезли. Включаются в настройках.


Attachments:
Eolite_3.9.png
Eolite_3.9.png [ 50.37 KiB | Viewed 3330 times ]

_________________
Через тернии к звездам
Top
   
 Post subject: Re: Eolite
PostPosted: Mon Aug 13, 2018 7:48 am 
Offline

Joined: Sat Apr 22, 2017 6:11 pm
Posts: 222
Конечно далёк от фэншуя, но зачем объявлять и выделять память в начале main:
Code:
dword devbuf;
...
devbuf = malloc(10000);

если devbuf используется только внутри switch за словом default:
Code:
ReadDir(19, devbuf, "/");

?

Кстати, справочка из Sphinx C--:
Quote:
Оператор, следующий за ключевым словом default, выполняется, если ни одна из констант не равна значению выражения. Если default опущено, то ни один оператор в теле переключателя не выполняется, и управление передается на оператор, следующий за switch.


Рекомендации:
Комментарии, что хотели сделать обновлением, их нет. Лучше, чтобы появились.
Коммит в SVN "fix5" очень подробно раскрывает суть исправления (собственно никак не раскрывает).
Если devbuf используется где-то ещё, то может сделать его глобальной переменной, а если нет - то следует поместить его внутрь default, чтобы при выполнении main'а память не отжирал. С другой стороны, если буфер непрерывно используется в цикле (то чтобы не выделять постоянно память, объявлено нормально), но тогда почему он попал в default?
При быстром просмотре ещё вопрос по системной функции ReadDir(): какая это конкретно функция ядра? Где она объявлена или это часть языка С-- (в доках языка не нашёл)? Собственно в каком файле об этой обёртке найти/почитать? Функция нигде в Eolite больше не используется, нужно больше уверенности в её корректном применении.


Top
   
 Post subject: Re: Eolite
PostPosted: Mon Aug 13, 2018 9:43 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
theonlymirage wrote:
Конечно далёк от фэншуя, но зачем объявлять и выделять память в начале main:
Код:

dword devbuf;
...
devbuf = malloc(10000);


если devbuf используется только внутри switch за словом default:
Код:

ReadDir(19, devbuf, "/");


?
Ну дык автор — дизайнер, а не программист, конкретно приведённый код — это ещё не так плохо :lol:
theonlymirage wrote:
Комментарии, что хотели сделать обновлением, их нет. Лучше, чтобы появились.
Коммит в SVN "fix5" очень подробно раскрывает суть исправления (собственно никак не раскрывает).
Если devbuf используется где-то ещё, то может сделать его глобальной переменной, а если нет - то следует поместить его внутрь default, чтобы при выполнении main'а память не отжирал. С другой стороны, если буфер непрерывно используется в цикле (то чтобы не выделять постоянно память, объявлено нормально), но тогда почему он попал в default?
Насколько можно судить по коду\форуму\чату\svn автор делает по принципу: работает, да и ладно; а если не работает — ну не судьба, значит.
theonlymirage wrote:
При быстром просмотре ещё вопрос по системной функции ReadDir(): какая это конкретно функция ядра? Где она объявлена или это часть языка С-- (в доках языка не нашёл)? Собственно в каком файле об этой обёртке найти/почитать? Функция нигде в Eolite больше не используется, нужно больше уверенности в её корректном применении.
theonlymirage, ИМХО, это не тот код, который следует изучать. Во многом это примеры того, как НЕ надо делать.
Если же интересует функция чтения папки, обёртки и примеры, то вот есть в теме Delphi7 examples
такой пример viewtopic.php?f=33&t=3469#p68896
возможно, полезен будет ещё и этот пример viewtopic.php?f=33&t=3469#p69401
Объявления функций находятся в файле KolibriOS.pas и перед каждой из них указан номер вызываемой системной функции, например:
Code:
{70.0}    Function  ReadFile(Path: PChar; Var Buffer; Count, LoPos, HiPos: Cardinal; Var BytesRead: Dword): Integer; StdCall; External 'KolibriOS';
{70.1}    Function  ReadFolder(Path: PChar; Var Buffer; Count, Start, Flags: Cardinal; Var BlocksRead: Dword): Integer; StdCall; External 'KolibriOS';
{70.2}    Function  CreateFile(Path: PChar): Integer; StdCall; External 'KolibriOS';
{70.3}    Function  WriteFile(Path: PChar; Const Buffer; Count, LoPos, HiPos: Cardinal; Var BytesWritten: Dword): Integer; StdCall; External 'KolibriOS';
{70.4}    Function  ResizeFile(Path: PChar; LoSize, HiSize: Cardinal): Integer; StdCall; External 'KolibriOS';
{70.5}    Function  GetFileAttributes(Path: PChar; Var Buffer: TFileAttributes): Integer; StdCall; External 'KolibriOS';
{70.6}    Function  SetFileAttributes(Path: PChar; Var Buffer: TFileAttributes): Integer; StdCall; External 'KolibriOS';
{70.7}    Function  RunFile(Path, CmdLine: PChar): Integer; StdCall; External 'KolibriOS';
{70.7}    Function  DebugFile(Path, CmdLine: PChar): Integer; StdCall; External 'KolibriOS';
{70.8}    Function  DeleteFile(Path: PChar): Integer; StdCall; External 'KolibriOS';
{70.9}    Function  CreateFolder(Path: PChar): Integer; StdCall; External 'KolibriOS';
Изначально, кстати, всё было в одном файле, вот в этом сообщении viewtopic.php?f=33&t=735&p=68255#p68255 есть ссылки.


Top
   
 Post subject: Re: Eolite
PostPosted: Mon Aug 13, 2018 12:59 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
0CodErr wrote:
Ну дык автор — дизайнер, а не программист, конкретно приведённый код — это ещё не так плохо :lol:.

К этим изменениям Leency отношения не имеет. Их вносил pavelyakov. А он часто делет непонятные изменения (не хочу его обидеть и его стремления похвальны, но таково мое мнение).
theonlymirage wrote:
Комментарии, что хотели сделать обновлением, их нет. Лучше, чтобы появились.
Коммит в SVN "fix5" очень подробно раскрывает суть исправления (собственно никак не раскрывает).

Я ему посоветовал делать их более информативаными. Надеюсь последний его коммит это демонстрация того, что он понял это.
theonlymirage wrote:
При быстром просмотре ещё вопрос по системной функции ReadDir(): какая это конкретно функция ядра? Где она объявлена или это часть языка С-- (в доках языка не нашёл)? Собственно в каком файле об этой обёртке найти/почитать? Функция нигде в Eolite больше не используется, нужно больше уверенности в её корректном применении.

тут все обертки для С--
http://websvn.kolibrios.org/listing.php ... e88bc8f15c

_________________
я лишь учусь


Top
   
 Post subject: Re: Eolite
PostPosted: Mon Aug 13, 2018 3:12 pm 
Offline

Joined: Sat Apr 22, 2017 6:11 pm
Posts: 222
punk_joker wrote:
тут все обертки для С--
http://websvn.kolibrios.org/listing.php ... e88bc8f15c


Благодарю,
значит ReadDir(n, ...) - это всё же функция 70.1
Если не ошибаюсь, для неё требуется буфер размером maxSize = 32 + n * (40+520), где n - кол-во блоков с информацией о файле.
А значит devbuf = malloc(10000) может быть не достаточно для вызова ReadDir(19, devbuf, "/"). Всё зависит от кодировки. Считаем по максимуму: 32 + 19 * 560 = 10672 байта.
К тому же, в последнем апдейте, pavelyakov увеличил число таких вызовов до 4, везде используется число 19. Предлагаю pavelyakov вынести это в константу и на основе константы вычислять размер буфера.

Quote:
Структура буфера:
заголовок (32 байта)
блок с информацией о файле 1
блок с информацией о файле 2
...
Структура блока данных входа каталога (БДВК):
+0: dword: атрибуты файла:
бит 0 (маска 1): файл только для чтения
бит 1 (маска 2): файл является скрытым
бит 2 (маска 4): файл является системным
бит 3 (маска 8): это метка тома (возвращается только подфункцией 5)
бит 4 (маска 0x10): это папка
бит 5 (маска 0x20): файл не архивировался - многие программы архивации имеют опцию, по которой архивируются только файлы с установленным этим битом, после чего этот бит сбрасывается - это может быть полезно для автоматического создания backup-архивов, ибо при записи бит обычно устанавливается (не в Kolibri, правда)
+4: byte: кодировка имени, соответствует полю +8 информационной структуры
+5: 3*byte: зарезервировано (нули)
+8: 4*byte: время создания файла
+12 = +0xC: 4*byte: дата создания файла
+16 = +0x10: 4*byte: время последнего доступа (чтение или запись)
+20 = +0x14: 4*byte: дата последнего доступа
+24 = +0x18: 4*byte: время последней модификации
+28 = +0x1C: 4*byte: дата последней модификации
+32 = +0x20: qword: размер файла в байтах (до 16777216 Тб)
+40 = +0x28: имя, размер в cp866 составляет 264 байта, иначе - 520 байт


P.S. Выбор числа 19 для корневого каталога несколько странный шаг. Его и достаточно сейчас и на ближайшие года, но и в тоже время есть возможность нормально узнать кол-во файлов/директорий в папке. Достаточно запросить один файл из директории и прочитать полученный заголовок:
Quote:
Структура заголовка:
+0: dword: версия структуры (текущая версия = 1)
+4: dword: количество размещённых блоков; не больше, чем запрошено в поле +12 информационной структуры; может быть меньше, если в папке кончились файлы (то же самое, что и в ebx)
+8: dword: общее число файлов в папке
+12 = +0xC: 20*byte: зарезервировано (нули)

Конечно если в системной функции нет бага внутри корневого каталога.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 913 posts ]  Go to page Previous 155 56 57 58 5961 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