Всем привет,
у меня вопрос: может ли несколько функций udelay выполняться паралельно? От чего зависить количество возможных таких «паралельных» задержек?
Я пишу block-driver-симулятор реального устройства. Он должен поддерживать паралельные операции (К примеру если устройство состоит из двух частей, то IO запросы к этим двум частям могут выполняться паралельно). Нужного паралеллизма я собераюсь достичь за счёт использования НЕСКОЛЬКИХ локов (один лок - для одной части устройства). Вот пример моего псевдокода:
void make_request(struct request_queue *q, struct bio *bio)
{
getnstimeofday(start);
spinlock_t lock = <<выбираю из списка локов, основываясь на bio>>;
spin_lock(lock);
//simulate IO ....
getnstimeofday(end);
udelay(needed - (end - start));
spin_unlock(lock);
}
Будет ли этот код работать паралельно (к примеру, для двух разных локов)?
Большое спасибо!