if (index >= MAX_HWIFS)
return;
save_flags(flags); /* all CPUs */
cli();
hwif = &ide_hwifs[index];
if (!hwif->present)
goto abort;
for (unit = 0; unit < MAX_DRIVES; ++unit) {
drive = &hwif->drives[unit];
if (!drive->present)
continue;
if (drive->busy || drive->usage)
goto abort;
if (DRIVER(drive)->cleanup(drive))
goto abort;
}
hwif->present = 0;
sti();
for (unit = 0; unit < MAX_DRIVES; ++unit) {
drive = &hwif->drives[unit];
|
- można je wyłączyć - makra
cli() i sti()
- kiedy są wyłączone, aktualnego procesu nie da się wywłaszczyć
- w najnowszych kernelach czasy działania z wyłączonymi przerwaniami nie przekraczają 80 mikrosekund, niekiedy jednak to nadal zbyt dużo
|