예제 #1
0
func (t *Thread) halt() (err error) {
	err = sys.Tgkill(t.dbp.Pid, t.Id, sys.SIGSTOP)
	if err != nil {
		err = fmt.Errorf("halt err %s on thread %d", err, t.Id)
		return
	}
	_, _, err = t.dbp.wait(t.Id, 0)
	if err != nil {
		err = fmt.Errorf("wait err %s on thread %d", err, t.Id)
		return
	}
	return
}
예제 #2
0
func (t *Thread) Halt() error {
	if stopped(t.Id) {
		return nil
	}
	err := sys.Tgkill(t.dbp.Pid, t.Id, sys.SIGSTOP)
	if err != nil {
		return fmt.Errorf("halt err %s on thread %d", err, t.Id)
	}
	_, _, err = wait(t.Id, t.dbp.Pid, 0)
	if err != nil {
		return fmt.Errorf("wait err %s on thread %d", err, t.Id)
	}
	t.running = false
	return nil
}