Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт ноя 13, 2018 5:52 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 904 сообщения ]  На страницу Пред. 155 56 57 58 5961 След.
Автор Сообщение
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Ср мар 21, 2018 6:57 pm 
Не в сети
Designer
Аватара пользователя

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

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


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пн мар 26, 2018 5:56 pm 
Не в сети
Designer
Аватара пользователя

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

Так что я 3 месяца мониторил рынок, пока мне не улыбнулась удача и я не купил Toshiba Satellite 2520CDS.
Вложение:
toshiba_2520cds.jpg
toshiba_2520cds.jpg [ 39.89 КБ | 1565 просмотров ]
Параметры:
- 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Мб) и еще исправлено две маленькие и одна критичная ошибка (тоже связанная с копированием).

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


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пн мар 26, 2018 7:17 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 412
Кто то недавно писал, про не поддерживаемые инструкции на АМД К6 ?


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пн мар 26, 2018 10:16 pm 
Не в сети
Designer
Аватара пользователя

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

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


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Вт мар 27, 2018 12:53 am 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 412
Leency писал(а):
Там действительно некоторые программы падают, из тех что я видел были только некоторые 3D и 2D демки.
А вот что не работает - так это как оказалось запись на HDD, да и чтение папки иногда падает. Буду репортить.

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


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Вт мар 27, 2018 12:58 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1249
Leency
Умеет копировать поблочно или всегда копирует поблочно? А то в большинстве случаев 4Мб это маловато.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Вт мар 27, 2018 5:34 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 249
Pathoswithin писал(а):
Leency
Умеет копировать поблочно или всегда копирует поблочно? А то в большинстве случаев 4Мб это маловато.

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


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Вт мар 27, 2018 7:50 pm 
Не в сети
Designer
Аватара пользователя

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

Паша, есть.

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


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Вт мар 27, 2018 9:44 pm 
Не в сети

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 137
А может всегда копировать поблочно? Перед началом копирования определить размер блока как некоторую часть от доступной памяти, скажем 20% или 30%.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Вт мар 27, 2018 10:55 pm 
Не в сети

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

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

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

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


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Ср апр 18, 2018 5:13 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4878
Eolite 3.9
Большие иконки подвезли. Включаются в настройках.


Вложения:
Eolite_3.9.png
Eolite_3.9.png [ 50.37 КБ | 1379 просмотров ]

_________________
Через тернии к звездам
Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пн авг 13, 2018 7:48 am 
Не в сети

Зарегистрирован: Сб апр 22, 2017 6:11 pm
Сообщения: 217
Конечно далёк от фэншуя, но зачем объявлять и выделять память в начале main:
Код:
dword devbuf;
...
devbuf = malloc(10000);

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

?

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


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


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пн авг 13, 2018 9:43 am 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
theonlymirage писал(а):
Конечно далёк от фэншуя, но зачем объявлять и выделять память в начале main:
Код:

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


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

ReadDir(19, devbuf, "/");


?
Ну дык автор — дизайнер, а не программист, конкретно приведённый код — это ещё не так плохо :lol:
theonlymirage писал(а):
Комментарии, что хотели сделать обновлением, их нет. Лучше, чтобы появились.
Коммит в SVN "fix5" очень подробно раскрывает суть исправления (собственно никак не раскрывает).
Если devbuf используется где-то ещё, то может сделать его глобальной переменной, а если нет - то следует поместить его внутрь default, чтобы при выполнении main'а память не отжирал. С другой стороны, если буфер непрерывно используется в цикле (то чтобы не выделять постоянно память, объявлено нормально), но тогда почему он попал в default?
Насколько можно судить по коду\форуму\чату\svn автор делает по принципу: работает, да и ладно; а если не работает — ну не судьба, значит.
theonlymirage писал(а):
При быстром просмотре ещё вопрос по системной функции ReadDir(): какая это конкретно функция ядра? Где она объявлена или это часть языка С-- (в доках языка не нашёл)? Собственно в каком файле об этой обёртке найти/почитать? Функция нигде в Eolite больше не используется, нужно больше уверенности в её корректном применении.
theonlymirage, ИМХО, это не тот код, который следует изучать. Во многом это примеры того, как НЕ надо делать.
Если же интересует функция чтения папки, обёртки и примеры, то вот есть в теме Delphi7 examples
такой пример viewtopic.php?f=33&t=3469#p68896
возможно, полезен будет ещё и этот пример viewtopic.php?f=33&t=3469#p69401
Объявления функций находятся в файле KolibriOS.pas и перед каждой из них указан номер вызываемой системной функции, например:
Код:
{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 есть ссылки.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пн авг 13, 2018 12:59 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1136
0CodErr писал(а):
Ну дык автор — дизайнер, а не программист, конкретно приведённый код — это ещё не так плохо :lol:.

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

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

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

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пн авг 13, 2018 3:12 pm 
Не в сети

Зарегистрирован: Сб апр 22, 2017 6:11 pm
Сообщения: 217
punk_joker писал(а):
тут все обертки для С--
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 вынести это в константу и на основе константы вычислять размер буфера.

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

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 904 сообщения ]  На страницу Пред. 155 56 57 58 5961 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB