The C99 standard specifies three values of errno (that is, it specifies three macros that have distinct values; what those values are are compiler-specific). Macro names starting with E<digit> and E<uppercase letter> are reserved to the implementation.

As far as I'm aware, you're allowed to use errno for your own devious purposes. No one will expect you to, but hey.