Хронометрирование в ядре Linux 2.6

Вы правы, полагая, что <> означает «не равно». Что вы упускаете, так это то, что NULL ничего не равно, а также не равно ничему (даже другим значениям NULL). Любое сравнение на равенство с NULL на самом деле оценивается как «Неизвестный», который не совпадает с «Истина» или «Ложь».

NULL = '?' -- evaluates to Unknown
NULL <> '?' -- evaluates to Unknown
NULL = NULL -- evaluates to Unknown
NULL <> NULL -- evaluates to Unknown

Если вы хотите включить NULL записей в свой результат, вам нужно сравнить, используя IS NULL. Измените свои заявления на это:

AND (Address1 <> '?' OR Address1 IS NULL)
AND (Address2 <> '?' OR Address2 IS NULL)
AND (Address3 <> '?' OR Address3 IS NULL)
9
задан Benjamin 22 February 2009 в 10:00
поделиться

1 ответ

Что Вы реализуете, вот по существу msleep_interruptible () (linux/kernel/timer.c)

/**
 * msleep_interruptible - sleep waiting for signals
 * @msecs: Time in milliseconds to sleep for
 */
unsigned long msleep_interruptible(unsigned int msecs)

Эта функция имеет преимущество, что спецификация находится в миллисекундах и скрывает детали мига, переносящегося внутренне. Обязательно проверьте возвращаемые значения, поскольку этот вызов возвращает количество остающегося мига. Нуль означает, что вызов спал конкретное количество миллисекунд, в то время как ненулевое значение указывает, что вызов был прерван это много мига рано.

Относительно обертывания посмотрите раздел 6.2.1.2 для описания мига и обертывания. Кроме того, это сообщение пытается описать обертывание в краткий обзор.

8
ответ дан 4 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: