LINUXPORTAL.RU  |   Живое общение LinuxPortal.Ru   |    Ленты событий        |   ФОРУМЫ  |   БИБЛИОТЕКА  |   ССЫЛКИ  |   НОВОСТИ  |   БЛОГИ АДМИНОВ

Участники   Поиск   F.A.Q.    Регистрация    Вход   Начало
Начало » Для администраторов и программистов » Железная разработка » eCos
Показать: Сегодняшние сообщения  :: Показать голосования :: Навигатор по сообщениям
Отправить по e-mail 
Переключение в режим просмотра в виде древовидного списка сообщений и ответов Создать новую тему Отправить ответ
eCos Птн, 16 Ноябрь 2007 03:01 Переход к следующему сообщения
kaboom в настоящее время не в онлайне kaboom  UNITED STATES
Сообщений: 997
Зарегистрирован: Июль 2002
Географическое положение: NY

guru · partner
    138 /* Unlock the scheduler. */
    139 externC void cyg_scheduler_unlock(void) __THROW
    140 {
    141     cyg_ucount32 slock = Cyg_Scheduler::get_sched_lock();
    142     CYG_ASSERT( 0 < slock, "Scheduler not locked" );
    143     // And program defensively too:
    144     if ( 0 < slock )
    145         Cyg_Scheduler::unlock();
    146 }
    147
"current/src/common/kapi.cxx" [readonly] 1264 lines --7%--                         96,10          7%



vot takaya vot OS. vishe privedena realizaziya "big kernel lock" v eCos. eta funcziya zovetsya is pod driverov, ili ip-stack(a).... symptomatica obshirna. vopros publice:
gde fundamental'naya oshibochka? net oshibishe, gliba...
Re: eCos Птн, 16 Ноябрь 2007 09:12 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

Первое что приходит в голову:

Цитата:


144 if ( 0 < slock )
145 Cyg_Scheduler::unlock();



между if и действием ничего не случится?
Re: eCos Птн, 16 Ноябрь 2007 14:20 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

У меня встречный вопрос - что будет происходить при захвате (неудачном) семафора при захваченной spinlock (для определённости версия ядра 2.6)?
Re: eCos Птн, 16 Ноябрь 2007 14:30 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

Или приводя к практическому аспекту - будут ли негативные последствия при этом и может ли это к ним привести в будущем (ну и почему :-))?
Re: eCos Птн, 16 Ноябрь 2007 16:48 Переход к предыдущему сообщенияПереход к следующему сообщения
kaboom в настоящее время не в онлайне kaboom  UNITED STATES
Сообщений: 997
Зарегистрирован: Июль 2002
Географическое положение: NY

guru · partner
Цитата:


между if и действием ничего не случится?


daze ne mezdu if ... a mezdu slock = ... i posleduyuschim
oi sluchitsya.... i ved' sluchaetsya ze postoyanno.

[Обновления: Птн, 16 Ноябрь 2007 16:50]

Re: eCos Птн, 16 Ноябрь 2007 22:50 Переход к предыдущему сообщенияПереход к следующему сообщения
kaboom в настоящее время не в онлайне kaboom  UNITED STATES
Сообщений: 997
Зарегистрирован: Июль 2002
Географическое положение: NY

guru · partner
ya pravil'no ponimayu, chto interesuet vopros:
" chto budet esli pomestit' derzatelya spinlock(a) v wait-queue?"
t.e. poiti sleep vmeste so spinlock(om).
kazetsya takih deyatelei prdelagyut rtasstrlivat' na meste bez suda i sledstviya. vprochem, ya soglasen, chto bilo bi neploho nauchit' yadro razbirat'sya s etim.
Re: eCos Птн, 16 Ноябрь 2007 22:53 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

eCos это вообще, imho, отдельная "песня".

А по поводу spinlock'а и семафора - на первый взгляд безобидные вещи происходят...
Re: eCos Птн, 16 Ноябрь 2007 22:55 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

Нет-нет, что будет с захваченным spinlock'ом при обломе на попытке захвата семафора?
Re: eCos Птн, 16 Ноябрь 2007 23:00 Переход к предыдущему сообщенияПереход к следующему сообщения
kaboom в настоящее время не в онлайне kaboom  UNITED STATES
Сообщений: 997
Зарегистрирован: Июль 2002
Географическое положение: NY

guru · partner
pri oblome, vse idut spat' v wait_queue. nu ne vse, a oblomivshiesya.
Re: eCos Птн, 16 Ноябрь 2007 23:21 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

Э...похоже я ошибся немного.

Я это к тому - не будет ли побочного эффекта когда мы обломимся и окажемся в schedule()?
Re: eCos Пнд, 19 Ноябрь 2007 10:15 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

Посмотрел код - вроде кроме свинского поведения (зажимаем spinlock и далее sleep) - никаких побочных эффектов не должно возникнуть (preempt_disable/enable() рекурсивны).
Re: eCos Пнд, 19 Ноябрь 2007 21:42 Переход к предыдущему сообщения
kaboom в настоящее время не в онлайне kaboom  UNITED STATES
Сообщений: 997
Зарегистрирован: Июль 2002
Географическое положение: NY

guru · partner
a vot eze iz vidennogo na svoei shkure:
http://sourceware.org/ml/ecos-devel/2006-01/msg00000.html
ya snachala dumal eto feature takaya:) a okazalos' eto bug.
voobschem, ideya takaya:
ISR, zovet DSR (deffered service routine), analog BH v linux(e) ili prochih softirq/tasklet(ov). tak vot, po vihodu iz ISR,
scheduler dolzen pozabotitsya chtobi DSR nachal ispolnyatsya.
no v eCos(e) scheduler zabivchivii. v moem sluchae eto viglyadit takim obrazom, chto driver zdet Rx s BUS(a), a posilayuschii zdet kogda driver prochitaet buffer. vse zdut, dannie sidyat v buffere. deadlock. ISR bil (sudya po schetchikam), a DSR net... ya kogda takoe vpervie uvidel, chut' so stula ne svalilsya.
  Переключение в режим просмотра в виде древовидного списка сообщений и ответов Создать новую тему Отправить ответ
Предыдущая тема:драйверы для USB устройств_2
Следующая тема:ICE
Переход к форуму:
  

-=] Вернуться вверх [=-
[ Сформировать XML ] [ RSS ]

Текущее время: Сбт Июл 31 17:43:03 MSD 2010
.:: Обратная связь :: Начало ::.

При поддержке: FUDforum 3.0.0.
Copyright © 2001-2009 FUDforum Bulletin Board Software

©"Linuxportal.Ru". Материалы сайта можно использовать свободно при условии сохранения этой свободы при дальнейшем распространении, если явно не указано иное.

Дизайн и программирование: ,
Поставьте нашу кнопку: Linux Portal.ru ::: Линукс Портал.ру