В контексте VxWorks errno определяется как два 16-битных:
- Верхний 16-разрядный указывает «модуль», в котором произошла ошибка.
- Младший 16-бит представляет конкретную ошибку для этого модуля.
Официальные значения модуля vxWorks (для errno) находятся в файле ../h/vwModNum.h.
В настоящее время они используют несколько сотен номеров.
Все эти номера модулей имеют вид
#define M_something (nn << 16)
Настоятельно не рекомендуется 1013 * изменять этот (или любой) заголовочный файл vxWorks.
Что вы можете сделать, это создать свой собственный файл заголовка модуля и начать с достаточно большого числа, чтобы не вызывать конфликтов.
/* myModNum.h */
#define M_MyModule (10000 << 16)
#define M_MyNextModule (10001 << 16)
...
В отдельных заголовочных файлах модуля создайте отдельные значения errno.
/* myModule.h */
#define S_MyModule_OutOfResources (M_MyModule | 1)
#define S_MyModule_InvalidHandle (M_MyModule | 2)
...
В своем коде вы можете установить errno для вашего определенного макроса.