Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Dec 04, 2020 2:37 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 184 posts ]  Go to page Previous 13 4 5 6 713 Next
Author Message
PostPosted: Sun Oct 18, 2009 7:03 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
andrew_programmer

Ядру проще контролировать указатели и буферы. Досточно проверить таблицы страниц. А как одному приложению проверить другое ? Если я просто читаю память без всяких блокировок и неправильно посчитал размер то будет страничная ошибка и вылет. Сам себе буратино. А если я получил блокировку, даже для галочки, и вылетел ? Галочка останется и все остальные будут ждать. В случае ядра можно тупо поставить cli и скопировать весь буфер. Не айс, но надёжно.

Mario

1)Всёх не забанишь, а дураков и чайников обижать грех.
2)К старым дырам добавится ещё одна, что не радует.
3)Ядро может свободно менять размер буфера, благо прямого доступа к нему приложение не имеет. Хочешь - страница текста, хочешь - снимок экрана. Для расшареной области это невозможно сделать. Надо создавать новую. Очень легко получить законные утечки памяти.


Top
   
PostPosted: Sun Oct 18, 2009 7:36 pm 
Serge
Quote:
а дураков и чайников обижать грех.

Если человек целенаправленно, и отдавая себе отчет в своих действиях, совершает зло, да еще просит советов как это лучше сделать (как получилось с автором "оксюморона"), то какой же это дурак и чайник?
Конечно отследить таких умельцев на начальном этапе сложно, но потом надо стучать по башке изо всех сил.
Quote:
К старым дырам добавится ещё одна, что не радует.

Так зачем плодить, если можно не плодить.
Возможно мои взгляды поменял Таненбаум, но тем не менее.
Quote:
Для расшареной области это невозможно сделать. Надо создавать новую. Очень легко получить законные утечки памяти.

Согласен. Но можно выйти из положения организовав кольцевую очередь буферов, рано или поздно потерянный участок будет ликвидирован. Тем более что все именованные области будут выделяться процессом-сервером. Плюс к процессу-серверу можно будет оформить графическую часть, которая позволит вручную чистить буфер при необходимости.


Top
   
PostPosted: Sun Oct 18, 2009 7:44 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Mario

То есть приложение должно каждый раз получать новое имя области а потом её открывать ?


Top
   
PostPosted: Sun Oct 18, 2009 8:09 pm 
Serge
Почему каждый раз? Только для вставки в буфер обмена.

Для вставки из буфера обмена будет использоваться область текущего указателя для вставки.

Будет одна область указателей размещенная в именованной памяти, которую при желании долботерроиста (или чайника) можно испортить, а можно и не портить, если использовать для работы с буфером макрос. Плюс процесс-сервер будет хранить резервную копию на этот случай в уже недоступной области.

В области указателей будут хранится ссылки на существующие слоты буфера обмена. В каждом слоте (который является независимой именованной областью, открытой только на чтение) может хранится произвольное содержимое в соответствии с указателями контейнера.

И одновременно будет существовать только одна область на запись, из которой в слоты чтения будет перемещаться информация.
По идее для буфера достаточно 16-32 слотов.

Сколько кстати именованных областей может держать ядро?

В общем шибко подробную модель я еще не продумывал, потому что не знаю - может уже кто-то работал над подобным. Если никто не отзовется то возьмусь.


Top
   
PostPosted: Sun Oct 18, 2009 8:34 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Mario

Как-то громоздко получается. Если делать по Таненбауму то только через IPC. У него на этот случай есть привилегированный вызов для копирования данных между адресными пространствами. В таком варианте можно сделать надежно и относительно просто. А через расшареную память не получится.


Top
   
PostPosted: Sun Oct 18, 2009 9:21 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1276
The best sollution I see is as follows:

-Creating a clipboard daemon (an application).
-And then use Unix-like sockets in kernel (wich will be implemented in net branch soon) to manage communication between the daemon and all applications that want to use the clipboard.

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Top
   
PostPosted: Sun Oct 18, 2009 9:47 pm 
Serge
Quote:
А через расшареную память не получится.

Этого не может быть, потому что не может быть никогда?
Я уже сделал похожую работу для OpenDialog, почему нет?

hidnplayr
Quote:
-Creating a clipboard daemon (an application).

I'm talking about the same. However, I prefer the terms server and client.
Quote:
And then use Unix-like sockets in kernel (wich will be implemented in net branch soon)

You're already working in this area? Can you tell more detail?


Top
   
PostPosted: Sun Oct 18, 2009 10:25 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Mario

Дуракоустойчиво.


Top
   
PostPosted: Sun Oct 18, 2009 11:30 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1276
Mario wrote:
Serge
I'm talking about the same. However, I prefer the terms server and client.
You're already working in this area? Can you tell more detail?


What more details do you want? Net branch has more or less Posix compatible functions to work with sockets (function 74).
http://wiki.kolibrios.org/New_network_api
There will also be a IPC socket type, like unix sockets:
http://beej.us/guide/bgipc/output/html/ ... xsock.html

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Top
   
PostPosted: Mon Oct 19, 2009 12:19 am 
Serge
Ну, хорошо - ты меня убедил. Я не специалист и заниматься этим вопросом не буду, потому что моя концепция ущербная и ее реализация будет вызывать нездоровые чувства у всей прогрессивной части сообщества. А пока специалисты решают какую ногу резать, больной будет терпеливо лежать и слушать.

Вернемся к теме еще через год.

hidnplayr
Many thanks for the links, but I decided not to pursue the matter.
Best regards.


Top
   
PostPosted: Mon Oct 19, 2009 12:38 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Блин ! Это получается как честный человек я теперь должен сделать буфер сам ??? Надо было помалкивать в тряпочку.
Ладно. Если разработаете API я сделаю реализацию. Если других желающий не появится.


Top
   
PostPosted: Thu Jun 17, 2010 12:03 pm 
Offline
User avatar

Joined: Wed Jan 27, 2010 10:59 am
Posts: 269
Прошло больше полгода... :mrgreen:

Поднямаю тему:
Quote:
Вопрос: Кто-нибудь занимается темой? Не то что есть - вставка текста через эмуляцию, а полноценным буфером?

Если у кого то на полпути и он вот-вот доделает, то я буду заниматься другими вопросами, благо их хватает.
Если желающих нет, то возьмусь за реализацию. Надо же к выходу следующей официальной версии сделать наконец буфер обмена по человечески.

З.Ы. Мне нравится идея процесса-сервера с буфером выделяемым посредством функции 68.22 (без участия функции 60).
(С) Mario

_________________
ушёл...


Top
   
PostPosted: Thu Jun 17, 2010 12:48 pm 
Offline
User avatar

Joined: Wed Jan 27, 2010 10:59 am
Posts: 269
Я вот то же интересуюсь - продолжает ли кто разработку полноценной программы-монитора для буфера обмена?

_________________
ушёл...


Top
   
PostPosted: Thu Jun 17, 2010 7:03 pm 
Nasarus
Я так думаю никто тебе по рукам не даст. Делай, тем более что мы с тобой уже обсуждали тонкости использования расшаренной памяти. Только стоит продумать всю процедур обмена до реализации в коде - лучше начертить блок-схему. Ну, и формат структур данных продумать: TEXT, RAW и т.д. Лучше с возможностью расширения.


Top
   
PostPosted: Fri Dec 07, 2012 9:26 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5341
Перечитал всю тему, все соглашались на то, что нужно делать в ядре, пока barsuk ВНЕЗАПНО не выложил @clip, реализованный через тормозной IPC. Прикручивать IPC и работу с буфером к приложениям никто не стал, в итоге уже 4 года прошло, как программа есть, но ей никто не пользуется.

Так что я очень хочу попросить: Serge, сделай, пожалуйста, ядерный вариант буфера обмена, как ты предлагал. Тогда ты писал, что это займёт несколько часов с отладкой.

_________________
Звиздеть не мешки ворочать


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 184 posts ]  Go to page Previous 13 4 5 6 713 Next

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