2017-04-06 1 views
3

J'essayais de comprendre comment les appels système Linux retournent les codes d'erreur. Je suis tombé sur times() appel système. Cette copie simple appel système des données vers l'espace utilisateur et si cette opération n'a pas été retours avec succès -EFAULT:renvoyer le code d'erreur dans le noyau Linux

SYSCALL_DEFINE1(times, struct tms __user *, tbuf) 
{ 
    if (tbuf) { 
     struct tms tmp; 

     do_sys_times(&tmp); 
     if (copy_to_user(tbuf, &tmp, sizeof(struct tms))) 
      return -EFAULT; 
    } 
    force_successful_syscall_return(); 
    return (long) jiffies_64_to_clock_t(get_jiffies_64()); 
} 

Mes questions sont les suivantes:

  1. Pourquoi -EFAULT? Ne devrait-il pas être EFAULT sans moins?
  2. Est-il courant de renvoyer des codes d'erreur négatifs?

Répondre