¿Por qué devolver un error negativo? (por ejemplo, retorno -EIO)

Otro ejemplo simple:

if (wpa_s->mlme.ssid_len == 0)
    return -EINVAL;

¿Por qué el menos unario? ¿Se hace esto (generalmente) para las funciones que devuelven> 0 en caso de éxito y <(=) 0 en caso de fallo, o hay alguna otra razón?

Respuestas a la pregunta(4)

Su respuesta a la pregunta