Warum einen negativen Fehler zurückgeben? (z. B. return -EIO)

Ein weiteres einfaches Beispiel:

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

Warum das unäre Minus? Wird dies (normalerweise) für Funktionen durchgeführt, die bei Erfolg> 0 und bei Fehlern <(=) 0 zurückgeben, oder gibt es einen anderen Grund?