Commit 554d47ec authored by Mikio Hara's avatar Mikio Hara

net: separate unix pollster initialization from network file descriptor allocation

Unlike the existing net package own pollster, runtime-integrated
network pollster on BSD variants, actually kqueue, requires a socket
that has beed passed to syscall.Listen previously for a stream
listener.

This CL separates pollDesc.Init of Unix network pollster from newFD
to avoid any breakages in the transition from Unix network pollster
to runtime-integrated pollster. Upcoming CLs will rearrange the call
order of pollster and syscall functions like the following;

- For dialers that open active connections, pollDesc.Init will be
  called in between syscall.Bind and syscall.Connect.

- For stream listeners that open passive stream connections,
  pollDesc.Init will be called just after syscall.Listen.

- For datagram listeners that open datagram connections,
  pollDesc.Init will be called just after syscall.Bind.

This is in preparation for runtime-integrated network pollster for BSD
variants.

Update #5199

R=dvyukov, bradfitz
CC=golang-dev
https://golang.org/cl/12663043
parent 654f3586
......@@ -252,14 +252,23 @@ func (pd *pollDesc) Close() {
}
func (pd *pollDesc) Lock() {
if pd.pollServer == nil {
return
}
pd.pollServer.Lock()
}
func (pd *pollDesc) Unlock() {
if pd.pollServer == nil {
return
}
pd.pollServer.Unlock()
}
func (pd *pollDesc) Wakeup() {
if pd.pollServer == nil {
return
}
pd.pollServer.Wakeup()
}
......@@ -294,6 +303,9 @@ func (pd *pollDesc) WaitWrite() error {
}
func (pd *pollDesc) Evict() bool {
if pd.pollServer == nil {
return false
}
return pd.pollServer.Evict(pd)
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment