Print this page
patch remove-dont-swap-flag

@@ -191,11 +191,10 @@
 {
         if (panicstr)
                 return;
         ASSERT(!quiesce_active);
 
-        ASSERT(curthread->t_schedflag & TS_DONT_SWAP);
         thread_lock(curthread);                 /* lock the thread */
         cv_block((condvar_impl_t *)cvp);
         thread_unlock_nopreempt(curthread);     /* unlock the waiters field */
         mutex_exit(mp);
         swtch();

@@ -324,11 +323,10 @@
                 cv_wait(cvp, mp);
                 return (rval);
         }
         ASSERT(t->t_intr == NULL);
 
-        ASSERT(curthread->t_schedflag & TS_DONT_SWAP);
         cancel_pending = schedctl_cancel_pending();
         lwp->lwp_asleep = 1;
         lwp->lwp_sysabort = 0;
         thread_lock(t);
         cv_block_sig(t, (condvar_impl_t *)cvp);

@@ -552,22 +550,18 @@
         lwp->lwp_asleep = 1;
         lwp->lwp_sysabort = 0;
         thread_lock(t);
         t->t_kpri_req = 0;      /* don't need kernel priority */
         cv_block_sig(t, (condvar_impl_t *)cvp);
-        /* I can be swapped now */
-        curthread->t_schedflag &= ~TS_DONT_SWAP;
         thread_unlock_nopreempt(t);
         mutex_exit(mp);
         if (ISSIG(t, JUSTLOOKING) || MUSTRETURN(p, t) || cancel_pending)
                 setrun(t);
         /* ASSERT(no locks are held) */
         swtch();
         signalled = (t->t_schedflag & TS_SIGNALLED);
         t->t_flag &= ~T_WAKEABLE;
-        /* TS_DONT_SWAP set by disp() */
-        ASSERT(curthread->t_schedflag & TS_DONT_SWAP);
         mutex_enter(mp);
         if (ISSIG_PENDING(t, lwp, p)) {
                 mutex_exit(mp);
                 if (issig(FORREAL))
                         rval = 0;