var runtime.sched

390 uses

	runtime (current package)
		debug.go#L21: 	lock(&sched.lock)
		debug.go#L23: 	unlock(&sched.lock)
		debugcall.go#L214: 		lock(&sched.lock)
		debugcall.go#L216: 		unlock(&sched.lock)
		mgc.go#L1724: 	totalCpu := sched.totaltime + (now-sched.procresizetime)*int64(gomaxprocs)
		mgc.go#L1987: 					lock(&sched.lock)
		mgc.go#L1995: 					unlock(&sched.lock)
		mgc.go#L2274: 	lock(&sched.sudoglock)
		mgc.go#L2276: 	for sg = sched.sudogcache; sg != nil; sg = sgnext {
		mgc.go#L2280: 	sched.sudogcache = nil
		mgc.go#L2281: 	unlock(&sched.sudoglock)
		mgc.go#L2285: 	lock(&sched.deferlock)
		mgc.go#L2286: 	for i := range sched.deferpool {
		mgc.go#L2290: 		for d = sched.deferpool[i]; d != nil; d = dlink {
		mgc.go#L2294: 		sched.deferpool[i] = nil
		mgc.go#L2296: 	unlock(&sched.deferlock)
		mgcmark.go#L278: 	lock(&sched.gFree.lock)
		mgcmark.go#L279: 	list := sched.gFree.stack
		mgcmark.go#L280: 	sched.gFree.stack = gList{}
		mgcmark.go#L281: 	unlock(&sched.gFree.lock)
		mgcmark.go#L298: 	lock(&sched.gFree.lock)
		mgcmark.go#L299: 	sched.gFree.noStack.pushAll(q)
		mgcmark.go#L300: 	unlock(&sched.gFree.lock)
		mgcmark.go#L1009: 		for !(gp.preempt && (preemptible || atomic.Load(&sched.gcwaiting) != 0)) {
		mgcmark.go#L1023: 	for !(gp.preempt && (preemptible || atomic.Load(&sched.gcwaiting) != 0)) {
		panic.go#L398: 		if len(pp.deferpool[sc]) == 0 && sched.deferpool[sc] != nil {
		panic.go#L402: 				lock(&sched.deferlock)
		panic.go#L403: 				for len(pp.deferpool[sc]) < cap(pp.deferpool[sc])/2 && sched.deferpool[sc] != nil {
		panic.go#L404: 					d := sched.deferpool[sc]
		panic.go#L405: 					sched.deferpool[sc] = d.link
		panic.go#L409: 				unlock(&sched.deferlock)
		panic.go#L471: 			lock(&sched.deferlock)
		panic.go#L472: 			last.link = sched.deferpool[sc]
		panic.go#L473: 			sched.deferpool[sc] = first
		panic.go#L474: 			unlock(&sched.deferlock)
		proc.go#L143: 		atomic.Store(&sched.sysmonStarting, 1)
		proc.go#L364: 		lock(&sched.sudoglock)
		proc.go#L366: 		for len(pp.sudogcache) < cap(pp.sudogcache)/2 && sched.sudogcache != nil {
		proc.go#L367: 			s := sched.sudogcache
		proc.go#L368: 			sched.sudogcache = s.next
		proc.go#L372: 		unlock(&sched.sudoglock)
		proc.go#L430: 		lock(&sched.sudoglock)
		proc.go#L431: 		last.next = sched.sudogcache
		proc.go#L432: 		sched.sudogcache = first
		proc.go#L433: 		unlock(&sched.sudoglock)
		proc.go#L601: 	lockInit(&sched.lock, lockRankSched)
		proc.go#L602: 	lockInit(&sched.sysmonlock, lockRankSysmon)
		proc.go#L603: 	lockInit(&sched.deferlock, lockRankDefer)
		proc.go#L604: 	lockInit(&sched.sudoglock, lockRankSudog)
		proc.go#L628: 	sched.maxmcount = 10000
		proc.go#L652: 	lock(&sched.lock)
		proc.go#L653: 	sched.lastpoll = uint64(nanotime())
		proc.go#L661: 	unlock(&sched.lock)
		proc.go#L697: 	assertLockHeld(&sched.lock)
		proc.go#L699: 	if mcount() > sched.maxmcount {
		proc.go#L700: 		print("runtime: program exceeds ", sched.maxmcount, "-thread limit\n")
		proc.go#L710: 	assertLockHeld(&sched.lock)
		proc.go#L712: 	if sched.mnext+1 < sched.mnext {
		proc.go#L715: 	id := sched.mnext
		proc.go#L716: 	sched.mnext++
		proc.go#L730: 	lock(&sched.lock)
		proc.go#L756: 	unlock(&sched.lock)
		proc.go#L812: 		sched.stopwait = freezeStopWait
		proc.go#L813: 		atomic.Store(&sched.gcwaiting, 1)
		proc.go#L1082: 	lock(&sched.lock)
		proc.go#L1083: 	sched.stopwait = gomaxprocs
		proc.go#L1084: 	atomic.Store(&sched.gcwaiting, 1)
		proc.go#L1088: 	sched.stopwait--
		proc.go#L1098: 			sched.stopwait--
		proc.go#L1108: 		sched.stopwait--
		proc.go#L1110: 	wait := sched.stopwait > 0
		proc.go#L1111: 	unlock(&sched.lock)
		proc.go#L1117: 			if notetsleep(&sched.stopnote, 100*1000) {
		proc.go#L1118: 				noteclear(&sched.stopnote)
		proc.go#L1127: 	if sched.stopwait != 0 {
		proc.go#L1159: 	lock(&sched.lock)
		proc.go#L1167: 	sched.gcwaiting = 0
		proc.go#L1168: 	if sched.sysmonwait != 0 {
		proc.go#L1169: 		sched.sysmonwait = 0
		proc.go#L1170: 		notewakeup(&sched.sysmonnote)
		proc.go#L1172: 	unlock(&sched.lock)
		proc.go#L1375: 		lock(&sched.lock)
		proc.go#L1376: 		sched.nmfreed++
		proc.go#L1378: 		unlock(&sched.lock)
		proc.go#L1397: 	lock(&sched.lock)
		proc.go#L1416: 		m.freelink = sched.freem
		proc.go#L1417: 		sched.freem = m
		proc.go#L1419: 	unlock(&sched.lock)
		proc.go#L1428: 	lock(&sched.lock)
		proc.go#L1429: 	sched.nmfreed++
		proc.go#L1431: 	unlock(&sched.lock)
		proc.go#L1473: 	lock(&sched.lock)
		proc.go#L1474: 	if sched.safePointWait != 0 {
		proc.go#L1477: 	sched.safePointWait = gomaxprocs - 1
		proc.go#L1478: 	sched.safePointFn = fn
		proc.go#L1494: 	for p := sched.pidle.ptr(); p != nil; p = p.link.ptr() {
		proc.go#L1497: 			sched.safePointWait--
		proc.go#L1501: 	wait := sched.safePointWait > 0
		proc.go#L1502: 	unlock(&sched.lock)
		proc.go#L1528: 			if notetsleep(&sched.safePointNote, 100*1000) {
		proc.go#L1529: 				noteclear(&sched.safePointNote)
		proc.go#L1535: 	if sched.safePointWait != 0 {
		proc.go#L1544: 	lock(&sched.lock)
		proc.go#L1545: 	sched.safePointFn = nil
		proc.go#L1546: 	unlock(&sched.lock)
		proc.go#L1571: 	for atomic.Load(&sched.sysmonStarting) != 0 {
		proc.go#L1649: 			lock(&sched.lock)
		proc.go#L1650: 			if atomic.Load(&sched.sysmonwait) != 0 {
		proc.go#L1651: 				atomic.Store(&sched.sysmonwait, 0)
		proc.go#L1652: 				notewakeup(&sched.sysmonnote)
		proc.go#L1654: 			unlock(&sched.lock)
		proc.go#L1691: 	sched.safePointFn(p)
		proc.go#L1692: 	lock(&sched.lock)
		proc.go#L1693: 	sched.safePointWait--
		proc.go#L1694: 	if sched.safePointWait == 0 {
		proc.go#L1695: 		notewakeup(&sched.safePointNote)
		proc.go#L1697: 	unlock(&sched.lock)
		proc.go#L1729: 	if sched.freem != nil {
		proc.go#L1730: 		lock(&sched.lock)
		proc.go#L1732: 		for freem := sched.freem; freem != nil; {
		proc.go#L1748: 		sched.freem = newList
		proc.go#L1749: 		unlock(&sched.lock)
		proc.go#L1868: 	atomic.Xadd(&sched.ngsys, -1)
		proc.go#L1919: 	gp.goid = int64(atomic.Xadd64(&sched.goidgen, 1))
		proc.go#L1930: 	atomic.Xadd(&sched.ngsys, +1)
		proc.go#L1971: 	atomic.Xadd(&sched.ngsys, +1)
		proc.go#L2212: 	lock(&sched.lock)
		proc.go#L2213: 	sched.nmsys++
		proc.go#L2215: 	unlock(&sched.lock)
		proc.go#L2254: 	lock(&sched.lock)
		proc.go#L2256: 	unlock(&sched.lock)
		proc.go#L2296: 	lock(&sched.lock)
		proc.go#L2300: 			unlock(&sched.lock)
		proc.go#L2304: 				if int32(atomic.Xadd(&sched.nmspinning, -1)) < 0 {
		proc.go#L2327: 		unlock(&sched.lock)
		proc.go#L2340: 	unlock(&sched.lock)
		proc.go#L2367: 	if !runqempty(_p_) || sched.runqsize != 0 {
		proc.go#L2378: 	if atomic.Load(&sched.nmspinning)+atomic.Load(&sched.npidle) == 0 && atomic.Cas(&sched.nmspinning, 0, 1) { // TODO: fast atomic
		proc.go#L2382: 	lock(&sched.lock)
		proc.go#L2383: 	if sched.gcwaiting != 0 {
		proc.go#L2385: 		sched.stopwait--
		proc.go#L2386: 		if sched.stopwait == 0 {
		proc.go#L2387: 			notewakeup(&sched.stopnote)
		proc.go#L2389: 		unlock(&sched.lock)
		proc.go#L2393: 		sched.safePointFn(_p_)
		proc.go#L2394: 		sched.safePointWait--
		proc.go#L2395: 		if sched.safePointWait == 0 {
		proc.go#L2396: 			notewakeup(&sched.safePointNote)
		proc.go#L2399: 	if sched.runqsize != 0 {
		proc.go#L2400: 		unlock(&sched.lock)
		proc.go#L2406: 	if sched.npidle == uint32(gomaxprocs-1) && atomic.Load64(&sched.lastpoll) != 0 {
		proc.go#L2407: 		unlock(&sched.lock)
		proc.go#L2416: 	unlock(&sched.lock)
		proc.go#L2426: 	if atomic.Load(&sched.npidle) == 0 {
		proc.go#L2430: 	if atomic.Load(&sched.nmspinning) != 0 || !atomic.Cas(&sched.nmspinning, 0, 1) {
		proc.go#L2488: 	if sched.gcwaiting == 0 {
		proc.go#L2495: 		if int32(atomic.Xadd(&sched.nmspinning, -1)) < 0 {
		proc.go#L2500: 	lock(&sched.lock)
		proc.go#L2502: 	sched.stopwait--
		proc.go#L2503: 	if sched.stopwait == 0 {
		proc.go#L2504: 		notewakeup(&sched.stopnote)
		proc.go#L2506: 	unlock(&sched.lock)
		proc.go#L2535: 	hz := sched.profilehz
		proc.go#L2563: 	if sched.gcwaiting != 0 {
		proc.go#L2588: 	if sched.runqsize != 0 {
		proc.go#L2589: 		lock(&sched.lock)
		proc.go#L2591: 		unlock(&sched.lock)
		proc.go#L2604: 	if netpollinited() && atomic.Load(&netpollWaiters) > 0 && atomic.Load64(&sched.lastpoll) != 0 {
		proc.go#L2622: 	if !_g_.m.spinning && 2*atomic.Load(&sched.nmspinning) >= procs-atomic.Load(&sched.npidle) {
		proc.go#L2627: 		atomic.Xadd(&sched.nmspinning, 1)
		proc.go#L2634: 			if sched.gcwaiting != 0 {
		proc.go#L2741: 	lock(&sched.lock)
		proc.go#L2742: 	if sched.gcwaiting != 0 || _p_.runSafePointFn != 0 {
		proc.go#L2743: 		unlock(&sched.lock)
		proc.go#L2746: 	if sched.runqsize != 0 {
		proc.go#L2748: 		unlock(&sched.lock)
		proc.go#L2755: 	unlock(&sched.lock)
		proc.go#L2773: 		if int32(atomic.Xadd(&sched.nmspinning, -1)) < 0 {
		proc.go#L2781: 			lock(&sched.lock)
		proc.go#L2783: 			unlock(&sched.lock)
		proc.go#L2788: 					atomic.Xadd(&sched.nmspinning, 1)
		proc.go#L2830: 		lock(&sched.lock)
		proc.go#L2847: 		unlock(&sched.lock)
		proc.go#L2852: 				atomic.Xadd(&sched.nmspinning, 1)
		proc.go#L2867: 	if netpollinited() && (atomic.Load(&netpollWaiters) > 0 || pollUntil != 0) && atomic.Xchg64(&sched.lastpoll, 0) != 0 {
		proc.go#L2868: 		atomic.Store64(&sched.pollUntil, uint64(pollUntil))
		proc.go#L2880: 		atomic.Store64(&sched.pollUntil, 0)
		proc.go#L2881: 		atomic.Store64(&sched.lastpoll, uint64(nanotime()))
		proc.go#L2888: 		lock(&sched.lock)
		proc.go#L2890: 		unlock(&sched.lock)
		proc.go#L2906: 				atomic.Xadd(&sched.nmspinning, 1)
		proc.go#L2911: 		pollerPollUntil := int64(atomic.Load64(&sched.pollUntil))
		proc.go#L2925: 	if sched.runqsize != 0 {
		proc.go#L2932: 	if netpollinited() && atomic.Load(&netpollWaiters) > 0 && sched.lastpoll != 0 {
		proc.go#L2945: 	if atomic.Load64(&sched.lastpoll) == 0 {
		proc.go#L2950: 		pollerPollUntil := int64(atomic.Load64(&sched.pollUntil))
		proc.go#L2969: 	nmspinning := atomic.Xadd(&sched.nmspinning, -1)
		proc.go#L3015: 		for ; n != 0 && sched.npidle != 0; n-- {
		proc.go#L3022: 		lock(&sched.lock)
		proc.go#L3024: 		unlock(&sched.lock)
		proc.go#L3029: 	npidle := int(atomic.Load(&sched.npidle))
		proc.go#L3037: 		lock(&sched.lock)
		proc.go#L3039: 		unlock(&sched.lock)
		proc.go#L3073: 	if sched.gcwaiting != 0 {
		proc.go#L3113: 		if _g_.m.p.ptr().schedtick%61 == 0 && sched.runqsize > 0 {
		proc.go#L3114: 			lock(&sched.lock)
		proc.go#L3116: 			unlock(&sched.lock)
		proc.go#L3135: 	if sched.disable.user && !schedEnabled(gp) {
		proc.go#L3139: 		lock(&sched.lock)
		proc.go#L3143: 			unlock(&sched.lock)
		proc.go#L3145: 			sched.disable.runnable.pushBack(gp)
		proc.go#L3146: 			sched.disable.n++
		proc.go#L3147: 			unlock(&sched.lock)
		proc.go#L3285: 	lock(&sched.lock)
		proc.go#L3287: 	unlock(&sched.lock)
		proc.go#L3381: 		atomic.Xadd(&sched.ngsys, -1)
		proc.go#L3532: 	if atomic.Load(&sched.sysmonwait) != 0 {
		proc.go#L3550: 	if sched.gcwaiting != 0 {
		proc.go#L3569: 	lock(&sched.lock)
		proc.go#L3570: 	if atomic.Load(&sched.sysmonwait) != 0 {
		proc.go#L3571: 		atomic.Store(&sched.sysmonwait, 0)
		proc.go#L3572: 		notewakeup(&sched.sysmonnote)
		proc.go#L3574: 	unlock(&sched.lock)
		proc.go#L3581: 	lock(&sched.lock)
		proc.go#L3582: 	if sched.stopwait > 0 && atomic.Cas(&_p_.status, _Psyscall, _Pgcstop) {
		proc.go#L3588: 		if sched.stopwait--; sched.stopwait == 0 {
		proc.go#L3589: 			notewakeup(&sched.stopnote)
		proc.go#L3592: 	unlock(&sched.lock)
		proc.go#L3693: 		if sched.disable.user && !schedEnabled(_g_) {
		proc.go#L3736: 	if sched.stopwait == freezeStopWait {
		proc.go#L3749: 	if sched.pidle != 0 {
		proc.go#L3795: 	lock(&sched.lock)
		proc.go#L3797: 	if _p_ != nil && atomic.Load(&sched.sysmonwait) != 0 {
		proc.go#L3798: 		atomic.Store(&sched.sysmonwait, 0)
		proc.go#L3799: 		notewakeup(&sched.sysmonnote)
		proc.go#L3801: 	unlock(&sched.lock)
		proc.go#L3818: 	lock(&sched.lock)
		proc.go#L3825: 	} else if atomic.Load(&sched.sysmonwait) != 0 {
		proc.go#L3826: 		atomic.Store(&sched.sysmonwait, 0)
		proc.go#L3827: 		notewakeup(&sched.sysmonnote)
		proc.go#L3829: 	unlock(&sched.lock)
		proc.go#L4075: 		atomic.Xadd(&sched.ngsys, +1)
		proc.go#L4083: 		_p_.goidcache = atomic.Xadd64(&sched.goidgen, _GoidCacheBatch)
		proc.go#L4154: 		lock(&sched.gFree.lock)
		proc.go#L4159: 				sched.gFree.noStack.push(gp)
		proc.go#L4161: 				sched.gFree.stack.push(gp)
		proc.go#L4163: 			sched.gFree.n++
		proc.go#L4165: 		unlock(&sched.gFree.lock)
		proc.go#L4173: 	if _p_.gFree.empty() && (!sched.gFree.stack.empty() || !sched.gFree.noStack.empty()) {
		proc.go#L4174: 		lock(&sched.gFree.lock)
		proc.go#L4178: 			gp := sched.gFree.stack.pop()
		proc.go#L4180: 				gp = sched.gFree.noStack.pop()
		proc.go#L4185: 			sched.gFree.n--
		proc.go#L4189: 		unlock(&sched.gFree.lock)
		proc.go#L4216: 	lock(&sched.gFree.lock)
		proc.go#L4221: 			sched.gFree.noStack.push(gp)
		proc.go#L4223: 			sched.gFree.stack.push(gp)
		proc.go#L4225: 		sched.gFree.n++
		proc.go#L4227: 	unlock(&sched.gFree.lock)
		proc.go#L4340: 	n := int32(atomic.Loaduintptr(&allglen)) - sched.gFree.n - int32(atomic.Load(&sched.ngsys))
		proc.go#L4354: 	return int32(sched.mnext - sched.nmfreed)
		proc.go#L4628: 	lock(&sched.lock)
		proc.go#L4629: 	sched.profilehz = hz
		proc.go#L4630: 	unlock(&sched.lock)
		proc.go#L4684: 	assertLockHeld(&sched.lock)
		proc.go#L4777: 	assertLockHeld(&sched.lock)
		proc.go#L4790: 	if sched.procresizetime != 0 {
		proc.go#L4791: 		sched.totaltime += int64(old) * (now - sched.procresizetime)
		proc.go#L4793: 	sched.procresizetime = now
		proc.go#L4977: 	lock(&sched.lock)
		proc.go#L4978: 	sched.nmidlelocked += v
		proc.go#L4982: 	unlock(&sched.lock)
		proc.go#L4989: 	assertLockHeld(&sched.lock)
		proc.go#L5020: 	run := mcount() - sched.nmidle - sched.nmidlelocked - sched.nmsys
		proc.go#L5025: 		print("runtime: checkdead: nmidle=", sched.nmidle, " nmidlelocked=", sched.nmidlelocked, " mcount=", mcount(), " nmsys=", sched.nmsys, "\n")
		proc.go#L5050: 		unlock(&sched.lock) // unlock so that GODEBUG=scheddetail=1 doesn't hang
		proc.go#L5059: 			for pp := &sched.pidle; *pp != 0; pp = &(*pp).ptr().link {
		proc.go#L5085: 	unlock(&sched.lock)    // unlock so that GODEBUG=scheddetail=1 doesn't hang
		proc.go#L5100: 	lock(&sched.lock)
		proc.go#L5101: 	sched.nmsys++
		proc.go#L5103: 	unlock(&sched.lock)
		proc.go#L5107: 	atomic.Store(&sched.sysmonStarting, 0)
		proc.go#L5141: 		if debug.schedtrace <= 0 && (sched.gcwaiting != 0 || atomic.Load(&sched.npidle) == uint32(gomaxprocs)) {
		proc.go#L5142: 			lock(&sched.lock)
		proc.go#L5143: 			if atomic.Load(&sched.gcwaiting) != 0 || atomic.Load(&sched.npidle) == uint32(gomaxprocs) {
		proc.go#L5147: 					atomic.Store(&sched.sysmonwait, 1)
		proc.go#L5148: 					unlock(&sched.lock)
		proc.go#L5159: 					syscallWake = notetsleep(&sched.sysmonnote, sleep)
		proc.go#L5164: 					lock(&sched.lock)
		proc.go#L5165: 					atomic.Store(&sched.sysmonwait, 0)
		proc.go#L5166: 					noteclear(&sched.sysmonnote)
		proc.go#L5173: 			unlock(&sched.lock)
		proc.go#L5176: 		lock(&sched.sysmonlock)
		proc.go#L5186: 		lastpoll := int64(atomic.Load64(&sched.lastpoll))
		proc.go#L5188: 			atomic.Cas64(&sched.lastpoll, uint64(lastpoll), uint64(now))
		proc.go#L5248: 		unlock(&sched.sysmonlock)
		proc.go#L5305: 			if runqempty(_p_) && atomic.Load(&sched.nmspinning)+atomic.Load(&sched.npidle) > 0 && pd.syscallwhen+10*1000*1000 > now {
		proc.go#L5395: 	lock(&sched.lock)
		proc.go#L5396: 	print("SCHED ", (now-starttime)/1e6, "ms: gomaxprocs=", gomaxprocs, " idleprocs=", sched.npidle, " threads=", mcount(), " spinningthreads=", sched.nmspinning, " idlethreads=", sched.nmidle, " runqueue=", sched.runqsize)
		proc.go#L5398: 		print(" gcwaiting=", sched.gcwaiting, " nmidlelocked=", sched.nmidlelocked, " stopwait=", sched.stopwait, " sysmonwait=", sched.sysmonwait, "\n")
		proc.go#L5428: 		unlock(&sched.lock)
		proc.go#L5467: 	unlock(&sched.lock)
		proc.go#L5476: 	lock(&sched.lock)
		proc.go#L5477: 	if sched.disable.user == !enable {
		proc.go#L5478: 		unlock(&sched.lock)
		proc.go#L5481: 	sched.disable.user = !enable
		proc.go#L5483: 		n := sched.disable.n
		proc.go#L5484: 		sched.disable.n = 0
		proc.go#L5485: 		globrunqputbatch(&sched.disable.runnable, n)
		proc.go#L5486: 		unlock(&sched.lock)
		proc.go#L5487: 		for ; n != 0 && sched.npidle != 0; n-- {
		proc.go#L5491: 		unlock(&sched.lock)
		proc.go#L5500: 	assertLockHeld(&sched.lock)
		proc.go#L5502: 	if sched.disable.user {
		proc.go#L5513: 	assertLockHeld(&sched.lock)
		proc.go#L5515: 	mp.schedlink = sched.midle
		proc.go#L5516: 	sched.midle.set(mp)
		proc.go#L5517: 	sched.nmidle++
		proc.go#L5526: 	assertLockHeld(&sched.lock)
		proc.go#L5528: 	mp := sched.midle.ptr()
		proc.go#L5530: 		sched.midle = mp.schedlink
		proc.go#L5531: 		sched.nmidle--
		proc.go#L5541: 	assertLockHeld(&sched.lock)
		proc.go#L5543: 	sched.runq.pushBack(gp)
		proc.go#L5544: 	sched.runqsize++
		proc.go#L5552: 	assertLockHeld(&sched.lock)
		proc.go#L5554: 	sched.runq.push(gp)
		proc.go#L5555: 	sched.runqsize++
		proc.go#L5562: 	assertLockHeld(&sched.lock)
		proc.go#L5564: 	sched.runq.pushBackAll(*batch)
		proc.go#L5565: 	sched.runqsize += n
		proc.go#L5572: 	assertLockHeld(&sched.lock)
		proc.go#L5574: 	if sched.runqsize == 0 {
		proc.go#L5578: 	n := sched.runqsize/gomaxprocs + 1
		proc.go#L5579: 	if n > sched.runqsize {
		proc.go#L5580: 		n = sched.runqsize
		proc.go#L5589: 	sched.runqsize -= n
		proc.go#L5591: 	gp := sched.runq.pop()
		proc.go#L5594: 		gp1 := sched.runq.pop()
		proc.go#L5674: 	assertLockHeld(&sched.lock)
		proc.go#L5681: 	_p_.link = sched.pidle
		proc.go#L5682: 	sched.pidle.set(_p_)
		proc.go#L5683: 	atomic.Xadd(&sched.npidle, 1) // TODO: fast atomic
		proc.go#L5693: 	assertLockHeld(&sched.lock)
		proc.go#L5695: 	_p_ := sched.pidle.ptr()
		proc.go#L5700: 		sched.pidle = _p_.link
		proc.go#L5701: 		atomic.Xadd(&sched.npidle, -1) // TODO: fast atomic
		proc.go#L5807: 	lock(&sched.lock)
		proc.go#L5809: 	unlock(&sched.lock)
		proc.go#L5841: 		lock(&sched.lock)
		proc.go#L5843: 		unlock(&sched.lock)
		proc.go#L6057: 	lock(&sched.lock)
		proc.go#L6058: 	out = int(sched.maxmcount)
		proc.go#L6060: 		sched.maxmcount = 0x7fffffff
		proc.go#L6062: 		sched.maxmcount = int32(in)
		proc.go#L6065: 	unlock(&sched.lock)
		proc.go#L6137: 	if i >= active_spin || ncpu <= 1 || gomaxprocs <= int32(sched.npidle+sched.nmspinning)+1 {
		runtime2.go#L1059: 	sched      schedt
		trace.go#L192: 	lock(&sched.sysmonlock)
		trace.go#L203: 		unlock(&sched.sysmonlock)
		trace.go#L275: 	unlock(&sched.sysmonlock)
		trace.go#L289: 	lock(&sched.sysmonlock)
		trace.go#L296: 		unlock(&sched.sysmonlock)
		trace.go#L334: 	unlock(&sched.sysmonlock)