mirror of https://github.com/golang/go.git
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
This commit is contained in:
parent
654f35865f
commit
554d47ecb5
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue