Board.KolibriOS.org

Official KolibriOS board
It is currently Wed May 22, 2019 10:02 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 14 posts ] 
Author Message
PostPosted: Fri Jul 09, 2010 12:52 pm 
В связи с предстоящим капитальным переписыванием KFM (Kolibri File Manager - если кто не знает, то его уши торчат из OpenDialog и Box_Lib, компонента FileBrowser соответственно) я планирую если не все операции с дисковой подсистемой, то хотя бы опции копирования переместить в такую библиотеку. Зачем по идее понятно - чтобы авторы всех других программы, которым позарез нужно скопировать файл или папку, не мучались изобретая свои велосипеды. Процедура будет настраиваемой, чтобы не было проблем с монопольным захватом файловых устройств на долгое время и нехваткой оперативной памяти или ее избыточным использованием как в случае с KFM сейчас (это ускоряет копирование, но ухудшает время отклика и монопольно захватывает дисковое устройство на длительное время). При использовании обращения всех программ в системе через эту библиотеку (разумеется их придется подкорректировать) можно получить более лучшее квази-параллельное распределение обращений к дисковой подсистеме, чем это есть сейчас - при этом переписывание ядра не потребуется.

Если у кого-нибудь есть более лучшие идеи (реальные, а не фантастические) и\или дополнения - готов их выслушать и учесть.


Top
   
PostPosted: Fri Jul 09, 2010 1:54 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
если возможно и рационально реализовать именно в этой библиотеке, то не помешали бы стандартные ф-ции ввода/вывода Си (fopen, fclose, fprintf, ...). можете считать это хотелкой...


Top
   
PostPosted: Fri Jul 09, 2010 2:05 pm 
Дело в том, что я не знаком с функциями, которые в Си - если есть подробное разжеванное описание, то можно учесть пожелание. Библиотека будет подключаться и вызываться подобно Box_Lib, так что проблем с использованием в ЯВУ не должно быть по идее. В самом ядре Колибри по идее нет такого явления как открыть и закрыть файл.

З.Ы. Хотелки именно в таком ключе высказывать вполне правильно.


Top
   
PostPosted: Fri Jul 09, 2010 9:07 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Оказалось, что толковых статей (на русском языке) по этой теме не так уж и много. Вот несколько, с которыми ИМХО следует ознакомиться...
http://www.borland-academy.ru/courses/c ... 03.03.html
http://ru.wikipedia.org/wiki/Файловый_ввод/вывод_в_языке_Си
http://ru.wikipedia.org/wiki/Stdio.h
http://mymanual.narod.ru/programmist/cp ... gl_4_1.htm

Структура FILE описана следующим образом (взято отсюда http://tigcc.ticalc.org/doc/stdio.html):
Code:
typedef struct {    char *fpos; /* Current position of file pointer (absolute address) */
void *base; /* Pointer to the base of the file */
unsigned short handle; /* File handle */
short flags; /* Flags (see FileFlags) */
short unget; /* 1-byte buffer for ungetc (b15=1 if non-empty) */
unsigned long alloc; /* Number of currently allocated bytes for the file */
unsigned short buffincrement; /* Number of bytes allocated at once */
} FILE;



Функция fprintf подобна printf из console.obj. Описание:
http://ru.wikipedia.org/wiki/Printf


Top
   
PostPosted: Thu Jul 22, 2010 5:34 am 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Есть предложение добавить твои функции в libio вместо создания новой библиотеки. Больше по существу пока что ничего.

_________________
in code we trust


Top
   
PostPosted: Thu Jul 22, 2010 6:13 am 
Предложение интересное, но есть пара моментов которые меня не воодушевляют. Во-первых, документации даже пользовательской нет (исходники типа Тинипада - не самая понятная документация, помнится я очень долго разбирался с libini), во-вторых стиль кода очень сильно отличается, что опять же затрудняет мое понимание. Я подумаю, спасибо за предложение.


Top
   
PostPosted: Fri Jul 23, 2010 7:26 am 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Набросал немного документации по libio. Пока что только на английском, так как легче (практически вся информация взята из комментариев в исходном коде, которые таки на английском). Лежит тут: http://wiki.kolibrios.org/wiki/Libs-dev.

_________________
in code we trust


Top
   
PostPosted: Fri Jul 23, 2010 10:45 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Извините за нескромный вопрос (да, я ленивый человек и в коде мне лазить неохота), но:
- А функции библиотеки libio типа stdcall? Или параметры передаются через регистры?


Top
   
PostPosted: Fri Jul 23, 2010 12:11 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Они stdcall. Из описаний видно, что используется макрос proc, а в конце статьи есть пример.

_________________
in code we trust


Top
   
PostPosted: Fri Jul 23, 2010 2:55 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
спасибо. до конца-то я и не дочитал :) а насчёт proc я мог и ошибаться.


Top
   
PostPosted: Sat Jul 24, 2010 1:03 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Подправил немного документацию, перевёл на русский. Читайте на здоровье :)

_________________
in code we trust


Top
   
PostPosted: Sat Jul 24, 2010 7:51 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Давно ждал документацию. Во многом разобрался сам (на исходниках), но это же не дело, когда для использования библиотеки нужно разбираться в её исходниках. Теперь прикладникам будет легче писать программы. Спасибо Майк!


Top
   
PostPosted: Sun Jul 25, 2010 9:45 am 
mike.dld
Спасибо.


Top
   
PostPosted: Sun Jul 25, 2010 10:27 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
mike.dld
Спасибо!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 14 posts ] 

All times are UTC+03:00


Who is online

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