[BACK]Return to sys_lwp.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / kern

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/kern/sys_lwp.c between version 1.61 and 1.62

version 1.61, 2017/06/01 02:45:13 version 1.62, 2017/12/08 01:19:29
Line 542  lwp_park(clockid_t clock_id, int flags, 
Line 542  lwp_park(clockid_t clock_id, int flags, 
         kmutex_t *mp;          kmutex_t *mp;
         wchan_t wchan;          wchan_t wchan;
         int timo, error;          int timo, error;
           struct timespec start;
         lwp_t *l;          lwp_t *l;
           bool timeremain = !(flags & TIMER_ABSTIME) && ts;
   
         if (ts != NULL) {          if (ts != NULL) {
                 if ((error = ts2timo(clock_id, flags, ts, &timo, NULL)) != 0)                  if ((error = ts2timo(clock_id, flags, ts, &timo,
                       timeremain ? &start : NULL)) != 0)
                         return error;                          return error;
                 KASSERT(timo != 0);                  KASSERT(timo != 0);
         } else {          } else {
Line 575  lwp_park(clockid_t clock_id, int flags, 
Line 578  lwp_park(clockid_t clock_id, int flags, 
         switch (error) {          switch (error) {
         case EWOULDBLOCK:          case EWOULDBLOCK:
                 error = ETIMEDOUT;                  error = ETIMEDOUT;
                   if (timeremain)
                           memset(ts, 0, sizeof(*ts));
                 break;                  break;
         case ERESTART:          case ERESTART:
                 error = EINTR;                  error = EINTR;
                 break;                  /*FALLTHROUGH*/
         default:          default:
                 /* nothing */                  if (timeremain)
                           clock_timeleft(clock_id, ts, &start);
                 break;                  break;
         }          }
         return error;          return error;
Line 598  sys____lwp_park60(struct lwp *l, const s
Line 604  sys____lwp_park60(struct lwp *l, const s
         /* {          /* {
                 syscallarg(clockid_t)                   clock_id;                  syscallarg(clockid_t)                   clock_id;
                 syscallarg(int)                         flags;                  syscallarg(int)                         flags;
                 syscallarg(const struct timespec *)     ts;                  syscallarg(struct timespec *)           ts;
                 syscallarg(lwpid_t)                     unpark;                  syscallarg(lwpid_t)                     unpark;
                 syscallarg(const void *)                hint;                  syscallarg(const void *)                hint;
                 syscallarg(const void *)                unparkhint;                  syscallarg(const void *)                unparkhint;
Line 621  sys____lwp_park60(struct lwp *l, const s
Line 627  sys____lwp_park60(struct lwp *l, const s
                         return error;                          return error;
         }          }
   
         return lwp_park(SCARG(uap, clock_id), SCARG(uap, flags), tsp,          error = lwp_park(SCARG(uap, clock_id), SCARG(uap, flags), tsp,
             SCARG(uap, hint));              SCARG(uap, hint));
           if (SCARG(uap, ts) != NULL && (SCARG(uap, flags) & TIMER_ABSTIME) == 0)
                   (void)copyout(tsp, SCARG(uap, ts), sizeof(*tsp));
           return error;
 }  }
   
 int  int

Legend:
Removed from v.1.61  
changed lines
  Added in v.1.62

CVSweb <webmaster@jp.NetBSD.org>