func (k *Kernel) NewThreadGroup(mntns *fs.MountNamespace, pidns *PIDNamespace, sh *SignalHandlers, terminationSignal linux.Signal, limits *limits.LimitSet) *ThreadGroup {
	tg := &ThreadGroup{
		threadGroupNode: threadGroupNode{
			pidns: pidns,
		},
		signalHandlers:    sh,
		terminationSignal: terminationSignal,
		ioUsage:           &usage.IO{},
		limits:            limits,
		mounts:            mntns,
	}
	tg.itimerRealTimer = ktime.NewTimer(k.monotonicClock, &itimerRealListener{tg: tg})
	tg.timers = make(map[linux.TimerID]*IntervalTimer)
	tg.oldRSeqCritical.Store(&OldRSeqCriticalRegion{})
	return tg
}
// NewThreadGroup returns a new, empty thread group in PID namespace pidns. The
// thread group leader will send its parent terminationSignal when it exits.
// The new thread group isn't visible to the system until a task has been
// created inside of it by a successful call to TaskSet.NewTask.
NewThreadGroup returns a new, empty thread group in PID namespace pidns. The
thread group leader will send its parent terminationSignal when it exits.
The new thread group isn't visible to the system until a task has been
created inside of it by a successful call to TaskSet.NewTask.
// NewThreadGroup returns a new empty thread group in PID namespace pidns . The // thread group leader will send its parent terminationSignal when it exits . // The new thread group isn ' t visible to the system until a task has been // created inside of it by a successful call to TaskSet . NewTask .
func (k *Kernel) NewThreadGroup(mntns *fs.MountNamespace, pidns *PIDNamespace, sh *SignalHandlers, terminationSignal linux.Signal, limits *limits.LimitSet) *ThreadGroup {
	tg := &ThreadGroup{
		threadGroupNode: threadGroupNode{
			pidns: pidns,
		},
		signalHandlers:    sh,
		terminationSignal: terminationSignal,
		ioUsage:           &usage.IO{},
		limits:            limits,
		mounts:            mntns,
	}
	tg.itimerRealTimer = ktime.NewTimer(k.monotonicClock, &itimerRealListener{tg: tg})
	tg.timers = make(map[linux.TimerID]*IntervalTimer)
	tg.oldRSeqCritical.Store(&OldRSeqCriticalRegion{})
	return tg
}
func ( k * Kernel ) NewThreadGroup ( mntns * fs . MountNamespace , pidns * PIDNamespace , sh * SignalHandlers , terminationSignal linux . Signal , limits * limits . LimitSet ) * ThreadGroup { tg := & ThreadGroup { threadGroupNode : threadGroupNode { pidns : pidns , } , signalHandlers : sh , terminationSignal : terminationSignal , ioUsage : & usage . IO { } , limits : limits , mounts : mntns , } tg . itimerRealTimer = ktime . NewTimer ( k . monotonicClock , & itimerRealListener { tg : tg } ) tg . timers = make ( map [ linux . TimerID ] * IntervalTimer ) tg . oldRSeqCritical . Store ( & OldRSeqCriticalRegion { } ) return tg }
NewThreadGroup returns a new, empty thread group in PID namespace pidns.
NewThreadGroup returns a new empty thread group in PID namespace pidns .