В контексте VxWorks егто определяются как два 16-битные:
- Верхнее 16-бит идентифицирует «модуль», где случилась ошибка.
- Нижняя 16-бит представляет собой конкретную ошибку для этого модуля.
Официальные значения модуля vxWorks (для errno) находятся в файле ../h/vwModNum.h. В настоящее время они используют несколько сотен номеров. Эти номера модулей все имеют вид
#define M_something (nn << 16)
Это сильно обескуражен, чтобы изменить это (или любой) заголовочный файл 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 в свой определенный макрос.