// automatically generated by stateify.

package waiter

import (
	"gvisor.dev/gvisor/pkg/state"
)

func (x *Entry) StateTypeName() string {
	return "pkg/waiter.Entry"
}

func (x *Entry) StateFields() []string {
	return []string{
		"Callback",
		"mask",
		"waiterEntry",
	}
}

func (x *Entry) beforeSave() {}

func (x *Entry) StateSave(m state.Sink) {
	x.beforeSave()
	m.Save(0, &x.Callback)
	m.Save(1, &x.mask)
	m.Save(2, &x.waiterEntry)
}

func (x *Entry) afterLoad() {}

func (x *Entry) StateLoad(m state.Source) {
	m.Load(0, &x.Callback)
	m.Load(1, &x.mask)
	m.Load(2, &x.waiterEntry)
}

func (x *Queue) StateTypeName() string {
	return "pkg/waiter.Queue"
}

func (x *Queue) StateFields() []string {
	return []string{}
}

func (x *Queue) beforeSave() {}

func (x *Queue) StateSave(m state.Sink) {
	x.beforeSave()
	if !state.IsZeroValue(&x.list) {
		state.Failf("list is %#v, expected zero", &x.list)
	}
}

func (x *Queue) afterLoad() {}

func (x *Queue) StateLoad(m state.Source) {
}

func (x *waiterList) StateTypeName() string {
	return "pkg/waiter.waiterList"
}

func (x *waiterList) StateFields() []string {
	return []string{
		"head",
		"tail",
	}
}

func (x *waiterList) beforeSave() {}

func (x *waiterList) StateSave(m state.Sink) {
	x.beforeSave()
	m.Save(0, &x.head)
	m.Save(1, &x.tail)
}

func (x *waiterList) afterLoad() {}

func (x *waiterList) StateLoad(m state.Source) {
	m.Load(0, &x.head)
	m.Load(1, &x.tail)
}

func (x *waiterEntry) StateTypeName() string {
	return "pkg/waiter.waiterEntry"
}

func (x *waiterEntry) StateFields() []string {
	return []string{
		"next",
		"prev",
	}
}

func (x *waiterEntry) beforeSave() {}

func (x *waiterEntry) StateSave(m state.Sink) {
	x.beforeSave()
	m.Save(0, &x.next)
	m.Save(1, &x.prev)
}

func (x *waiterEntry) afterLoad() {}

func (x *waiterEntry) StateLoad(m state.Source) {
	m.Load(0, &x.next)
	m.Load(1, &x.prev)
}

func init() {
	state.Register((*Entry)(nil))
	state.Register((*Queue)(nil))
	state.Register((*waiterList)(nil))
	state.Register((*waiterEntry)(nil))
}