> Date: Fri, 05 Apr 2013 18:26:32 -0400 > From: Ted Unangst <t...@tedunangst.com> > > The small bits of code hiding behind rthreads_enabled aren't really > experimental anymore. At this point, it's just one more knob you can > twist to break your system.
I'm not sure about the sysctl change. Are we sure there isn't any code out there that uses it? In that case we should hardcode it to 1. The other bits are ok kettenis@ > Index: kern/kern_exit.c > =================================================================== > RCS file: /cvs/src/sys/kern/kern_exit.c,v > retrieving revision 1.121 > diff -u -p -r1.121 kern_exit.c > --- kern/kern_exit.c 30 Mar 2013 06:32:25 -0000 1.121 > +++ kern/kern_exit.c 5 Apr 2013 22:18:44 -0000 > @@ -96,9 +96,6 @@ sys___threxit(struct proc *p, void *v, r > syscallarg(pid_t *) notdead; > } */ *uap = v; > > - if (!rthreads_enabled) > - return (EINVAL); > - > if (SCARG(uap, notdead) != NULL) { > pid_t zero = 0; > if (copyout(&zero, SCARG(uap, notdead), sizeof(zero))) { > Index: kern/kern_fork.c > =================================================================== > RCS file: /cvs/src/sys/kern/kern_fork.c,v > retrieving revision 1.145 > diff -u -p -r1.145 kern_fork.c > --- kern/kern_fork.c 14 Mar 2013 21:38:22 -0000 1.145 > +++ kern/kern_fork.c 5 Apr 2013 22:18:44 -0000 > @@ -243,8 +243,6 @@ fork1(struct proc *curp, int exitsig, in > > /* sanity check some flag combinations */ > if (flags & FORK_THREAD) { > - if (!rthreads_enabled) > - return (ENOTSUP); > if ((flags & (FORK_SIGHAND | FORK_NOZOMBIE)) != > (FORK_SIGHAND | FORK_NOZOMBIE)) > return (EINVAL); > Index: kern/kern_prot.c > =================================================================== > RCS file: /cvs/src/sys/kern/kern_prot.c,v > retrieving revision 1.55 > diff -u -p -r1.55 kern_prot.c > --- kern/kern_prot.c 1 Oct 2012 00:08:42 -0000 1.55 > +++ kern/kern_prot.c 5 Apr 2013 22:18:44 -0000 > @@ -72,8 +72,6 @@ int > sys_getthrid(struct proc *p, void *v, register_t *retval) > { > > - if (!rthreads_enabled) > - return (ENOTSUP); > *retval = p->p_pid + THREAD_PID_OFFSET; > return (0); > } > Index: kern/kern_sig.c > =================================================================== > RCS file: /cvs/src/sys/kern/kern_sig.c,v > retrieving revision 1.149 > diff -u -p -r1.149 kern_sig.c > --- kern/kern_sig.c 28 Mar 2013 16:55:25 -0000 1.149 > +++ kern/kern_sig.c 5 Apr 2013 22:18:44 -0000 > @@ -1612,9 +1612,6 @@ sys___thrsigdivert(struct proc *p, void > long long to_ticks = 0; > int error; > > - if (!rthreads_enabled) > - return (ENOTSUP); > - > m = NULL; > mask = SCARG(uap, sigmask) &~ sigcantmask; > > Index: kern/kern_synch.c > =================================================================== > RCS file: /cvs/src/sys/kern/kern_synch.c,v > retrieving revision 1.104 > diff -u -p -r1.104 kern_synch.c > --- kern/kern_synch.c 21 Aug 2012 19:51:58 -0000 1.104 > +++ kern/kern_synch.c 5 Apr 2013 22:18:44 -0000 > @@ -409,10 +409,6 @@ sys___thrsleep(struct proc *p, void *v, > long long to_ticks = 0; > int abort, error; > > - if (!rthreads_enabled) { > - *retval = ENOTSUP; > - return (0); > - } > if (ident == 0) { > *retval = EINVAL; > return (0); > @@ -496,9 +492,7 @@ sys___thrwakeup(struct proc *p, void *v, > struct proc *q; > int found = 0; > > - if (!rthreads_enabled) > - *retval = ENOTSUP; > - else if (ident == 0) > + if (ident == 0) > *retval = EINVAL; > else { > TAILQ_FOREACH(q, &p->p_p->ps_threads, p_thr_link) { > Index: kern/kern_sysctl.c > =================================================================== > RCS file: /cvs/src/sys/kern/kern_sysctl.c,v > retrieving revision 1.233 > diff -u -p -r1.233 kern_sysctl.c > --- kern/kern_sysctl.c 23 Mar 2013 21:22:20 -0000 1.233 > +++ kern/kern_sysctl.c 5 Apr 2013 22:18:44 -0000 > @@ -129,8 +129,6 @@ int (*cpu_cpuspeed)(int *); > void (*cpu_setperf)(int); > int perflevel = 100; > > -int rthreads_enabled = 1; > - > /* > * Lock to avoid too many processes vslocking a large amount of memory > * at the same time. > @@ -565,9 +563,6 @@ kern_sysctl(int *name, u_int namelen, vo > case KERN_CPTIME2: > return (sysctl_cptime2(name + 1, namelen -1, oldp, oldlenp, > newp, newlen)); > - case KERN_RTHREADS: > - return (sysctl_int(oldp, oldlenp, newp, newlen, > - &rthreads_enabled)); > case KERN_CACHEPCT: { > u_int64_t dmapages; > int opct, pgs; > Index: sys/sysctl.h > =================================================================== > RCS file: /cvs/src/sys/sys/sysctl.h,v > retrieving revision 1.131 > diff -u -p -r1.131 sysctl.h > --- sys/sysctl.h 24 Mar 2013 00:09:31 -0000 1.131 > +++ sys/sysctl.h 5 Apr 2013 22:18:44 -0000 > @@ -174,7 +174,6 @@ struct ctlname { > #define KERN_CPTIME2 71 /* array: cp_time2 */ > #define KERN_CACHEPCT 72 /* buffer cache % of physmem */ > #define KERN_FILE2 73 /* struct: file entries */ > -#define KERN_RTHREADS 74 /* kernel rthreads support > enabled */ > #define KERN_CONSDEV 75 /* dev_t: console terminal > device */ > #define KERN_NETLIVELOCKS 76 /* int: number of network > livelocks */ > #define KERN_POOL_DEBUG 77 /* int: enable pool_debug */ > @@ -256,7 +255,7 @@ struct ctlname { > { "cp_time2", CTLTYPE_STRUCT }, \ > { "bufcachepercent", CTLTYPE_INT }, \ > { "file2", CTLTYPE_STRUCT }, \ > - { "rthreads", CTLTYPE_INT }, \ > + { "rthreads", 0 }, \ > { "consdev", CTLTYPE_STRUCT }, \ > { "netlivelocks", CTLTYPE_INT }, \ > { "pool_debug", CTLTYPE_INT }, \ > Index: sys/systm.h > =================================================================== > RCS file: /cvs/src/sys/sys/systm.h,v > retrieving revision 1.96 > diff -u -p -r1.96 systm.h > --- sys/systm.h 28 Mar 2013 16:41:39 -0000 1.96 > +++ sys/systm.h 5 Apr 2013 22:18:44 -0000 > @@ -110,8 +110,6 @@ struct proc; > struct process; > #define curproc curcpu()->ci_curproc > > -extern int rthreads_enabled; > - > typedef int sy_call_t(struct proc *, void *, register_t *); > > extern struct sysent { /* system call table */ > >