| eCos |
Птн, 16 Ноябрь 2007 03:01  |
|
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 16:48   |
|
| Цитата: |
между 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   |
|
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 23:00   |
|
|
pri oblome, vse idut spat' v wait_queue. nu ne vse, a oblomivshiesya.
|
|
|
|
|
| Re: eCos |
Пнд, 19 Ноябрь 2007 21:42  |
|
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.
|
|
|