Глядя на документацию для pthread_*
функций, таких как pthread_rwlock_destroy
и многих других, это как сформулирована документация:
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха функции pthread_rwlock_destroy() и pthread_rwlock_init() должны возвращать ноль; в противном случае должен быть возвращен номер ошибки, указывающий на ошибку.
Проверки ошибок [EBUSY] и [EINVAL], если они реализованы, действуют так, как если бы они выполнялись непосредственно в начале обработки функции и вызывали возврат ошибки до изменения состояния блокировки чтения-записи, заданной rwlock.
Это говорит о том, что в случае ошибки должен быть возвращен номер ошибки. Затем он объясняет коды ошибок:
ОШИБКИ
Функция pthread_rwlock_destroy() может завершиться ошибкой, если:
[EBUSY]
Реализация обнаружила попытку уничтожить объект, на который ссылается rwlock, когда он заблокирован.
...
В котором не упоминается, возвращается ли EBUSY
или -EBUSY
. Почти везде я вижу, что когда функции возвращают код ошибки, они возвращают -E*****
.
Означает ли это, что pthread_*
функции также следуют этому соглашению? Должен ли я проверять возвращаемое значение по самому -EBUSY
или EBUSY
?
По той же теме, будут ли они хранить EBUSY
в errno
или -EBUSY
?
EBUSY != -EBUSY
.. Я не понимаю, откуда берутся отрицательные числа. - person   schedule 19.03.2013EBUSY != -EBUSY
, поэтому вам нужно знать, возвращается лиEBUSY
или-EBUSY
. Обычно коды ошибок определяются положительными, а затем возвращаются со знаком минус после них. Итак... отрицательные числа появляются там, где они ставят-
? Или я совсем не так понял ваш комментарий? - person Shahbaz   schedule 20.03.2013>0
, ни<0
, но!=0
... если это не удалось, значит, это ошибка! ;-) - person alk   schedule 20.03.2013EBUSY
или-EBUSY
. Я спрашивал, какой правильный. - person Shahbaz   schedule 21.03.2013