События

2 views
Skip to first unread message

Николай Мальковский

unread,
Apr 18, 2011, 3:39:49 PM4/18/11
to Embox
Правда ли, что при вызове softirq_dispatch вобще говоря в
softirq_pending далеко не все биты единичные?

Зачем нужно разделение обработки события на event_send и
event_dispatch ?

Дмитрий Авдюхин

unread,
Apr 18, 2011, 4:32:19 PM4/18/11
to em...@googlegroups.com
К слову, если
вот это: http://code.google.com/p/embox/wiki/ThreadsDescription
и вот это: http://code.google.com/p/embox/wiki/Schedulers
единственные wiki-страницы касательно потоков, то они выглядят каплю устаревшими. Насколько я понял, они уже просто неверны, ибо рассказывают об уже несуществующих файлах.

18 апреля 2011 г. 23:39 пользователь Николай Мальковский <malko...@gmail.com> написал:



--
С уважением,
Авдюхин Дмитрий.

Anton Bondarev

unread,
Apr 19, 2011, 2:51:52 AM4/19/11
to Embox
Привет.
Да могут быть и не единичные софтирки. То есть у нас есть вложенные
прерывания и в принципе может случится ситуация когда оба прерывания
установят какой то из битов софтирков.
Нужно разделение на send и dispatch потому что они вызываются в разных
контекстах dispatch вызывается на выходе из обработки прерывания
(обычно), с включенными прерываниями и так далее. а send может
вызваться из контекста прерывания, по сути дела мы откладываем
обработку какого то события на некоторое время что бы не блокировать
программу полностью.

Anton Bondarev

unread,
Apr 19, 2011, 2:52:56 AM4/19/11
to Embox
Да извиняемся, не успеваем обновить вики страницы.
Вот сейчас статьи народ напишет и это будет текстом для вики:)

On 19 апр, 00:32, Дмитрий Авдюхин <dimo...@gmail.com> wrote:
> К слову, если
> вот это:http://code.google.com/p/embox/wiki/ThreadsDescription
> и вот это:http://code.google.com/p/embox/wiki/Schedulers
> единственные wiki-страницы касательно потоков, то они выглядят каплю
> устаревшими. Насколько я понял, они уже просто неверны, ибо рассказывают об
> уже несуществующих файлах.
>
> 18 апреля 2011 г. 23:39 пользователь Николай Мальковский <

> malkovsk...@gmail.com> написал:

Николай Мальковский

unread,
Apr 19, 2011, 1:16:25 PM4/19/11
to em...@googlegroups.com
В тесте even_send и event_dispatch просто вызываются друг за другом.....или же подразумевается, что они дожны работать так, как написал Антон, но не работают?

по поводу soft_irq:
могу переписать тот цикл, чтобы перебирались только единичные биты

19 апреля 2011 г. 10:51 пользователь Anton Bondarev <anto...@mail.ru> написал:

Eldar Abusalimov

unread,
Apr 19, 2011, 1:22:43 PM4/19/11
to em...@googlegroups.com
Парень, зачем переписывать то, что:
а. Работает как часы
б. Будет скоро выкинуто

Нет, ну правда?

19 апреля 2011 г. 21:16 пользователь Николай Мальковский <malko...@gmail.com> написал:

по поводу soft_irq:
могу переписать тот цикл, чтобы перебирались только единичные биты



--
Best regards,
Eldar Sh. Abusalimov

Николай Мальковский

unread,
Apr 19, 2011, 1:35:19 PM4/19/11
to em...@googlegroups.com
не надо так не надо =)

2011/4/19 Eldar Abusalimov <eldar.ab...@gmail.com>

Илья К

unread,
Apr 19, 2011, 1:55:06 PM4/19/11
to em...@googlegroups.com
Эльдар, не так грубо, будь мягче ;)

19 апреля 2011 г. 21:35 пользователь Николай Мальковский <malko...@gmail.com> написал:

Anton Bondarev

unread,
Apr 20, 2011, 3:03:26 AM4/20/11
to Embox
Да действительно не нужно наверное переписывать. Хотя я не очень понял
что такое единичные биты? То есть если напишешь что же ты хочешь
сделать словами и это будет полезно для общества, то всегда
пожалуйста. Но пока хочется что бы люди делали свои задачи, а то
кавардак получается.

Идея задачи в том что бы ты сделал новый эвент диспатчер (лежащий
рядом). Он должен работать как я описал:) То есть принимать хендлер
или его идентификатор и очень быстро вызываться (но вызываться тоже по
очереди)

На счет грубости согласен, нужно быть мягче, всем:)

On 19 апр, 21:55, Илья К <ki.s...@gmail.com> wrote:
> Эльдар, не так грубо, будь мягче ;)
>
> 19 апреля 2011 г. 21:35 пользователь Николай Мальковский <

> malkovsk...@gmail.com> написал:


>
>
>
>
>
>
>
> > не надо так не надо =)
>

> > 2011/4/19 Eldar Abusalimov <eldar.abusali...@gmail.com>


>
> >> Парень, зачем переписывать то, что:
>
> >> а. Работает как часы
> >> б. Будет скоро выкинуто
>
> >> Нет, ну правда?
>
> >> 19 апреля 2011 г. 21:16 пользователь Николай Мальковский <

> >> malkovsk...@gmail.com> написал:

Eldar Abusalimov

unread,
Apr 20, 2011, 6:43:23 AM4/20/11
to em...@googlegroups.com
Где грубость-то? Я мягок, как французская булочка. =)

20 апреля 2011 г. 11:03 пользователь Anton Bondarev <anto...@mail.ru> написал:

Gleb Efimov

unread,
Apr 20, 2011, 7:02:51 AM4/20/11
to em...@googlegroups.com
Какая нежность... :-)

20.04.11, Eldar Abusalimov<eldar.ab...@gmail.com> написал(а):

Дмитрий Авдюхин

unread,
Apr 20, 2011, 11:33:23 AM4/20/11
to em...@googlegroups.com
Про биты, насколько я понял: при обходе маски вы вынуждены просматривать все биты, в том числе и содержащие нули. Однако, можно обойти ее так, чтобы рассматривать только биты, в которых стоят единицы. Ну и вроде это должно работать побыстрее. Чисто мое понимание сказанного.

2011/4/20 Gleb Efimov <sen...@gmail.com>

Николай Мальковский

unread,
Apr 27, 2011, 8:00:19 PM4/27/11
to em...@googlegroups.com
В общем да, как и написал Дима, подразумевается, что если подряд сравнивать все биты числа с 1, то некоторые действия будут лишними(делать то нам что-то надо только в случае, когда бит единичный). Можно сделать цикл только по единичным битам, например так 

for(int T = .....; T ; T ^= T&-T)

тут возникает проблема, что T&-T - это число, у которого есть только один единичный бит соотв. младшему единичнуму биту числа T, а обычно интересен его номер.
как вычислять номер быстро можно посмотреть например здесь:

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

====================================================

Теперь по делу:
Когда я пытался подключить тест к event_dispatcher, сам он проходил, но тянул за собой irq_deep_handler, который валился.
Что можно с этим поделать?
И все-таки, как связаны softirq и evdispatch. У event_dispatch в параметрах есть softirq_nr_t, который используется только в тесте, чтобы передать функцию параметром в softirq_install

20 апреля 2011 г. 19:33 пользователь Дмитрий Авдюхин <dim...@gmail.com> написал:
Reply all
Reply to author
Forward
0 new messages