mqueues: Remove duplicate code.
authorStathis Kamperis <beket@dragonflybsd.org>
Thu, 14 Jan 2010 21:27:24 +0000 (23:27 +0200)
committerStathis Kamperis <beket@dragonflybsd.org>
Thu, 14 Jan 2010 21:54:41 +0000 (23:54 +0200)
A note that missed from my previous commit:
In issue 6, mq_timed{send, receive}() were optionally expected to return
EINVAL upon an invalid timeout request, if the calling process|thread would
have blocked.
In issue 7 this is now mandatory.

Original-bug-reported-by: swildner@
sys/kern/sys_mqueue.c

index 59bdde4..dd63f34 100644 (file)
@@ -277,18 +277,15 @@ abstimeout2timo(struct timespec *ts, int *timo)
        struct timespec tsd;
        int error;
 
-       if (ts->tv_sec < 0 || ts->tv_nsec < 0 || ts->tv_nsec >= 1000000000) {
-               return EINVAL;
+       error = itimespecfix(ts);
+       if (error) {
+               return error;
        }
        getnanotime(&tsd);
        timespecsub(ts, &tsd);
        if (ts->tv_sec < 0 || (ts->tv_sec == 0 && ts->tv_nsec <= 0)) {
                return ETIMEDOUT;
        }
-       error = itimespecfix(ts);
-       if (error) {
-               return error;
-       }
        *timo = tstohz(ts);
        KKASSERT(*timo != 0);