This is the type defined in here (as well as several other places).
As a rule, double underscore in front of a type, variable or function name implies a name that is always reserved as defined in section 7.1.3 of the current standard (C99).
Michael Foukarakis
source share