...

Source file src/edge-infra.dev/pkg/lib/kernel/udev/sockets/monitor.go

Documentation: edge-infra.dev/pkg/lib/kernel/udev/sockets

     1  //go:build linux
     2  
     3  package sockets
     4  
     5  import (
     6  	"io"
     7  
     8  	"golang.org/x/sys/unix"
     9  )
    10  
    11  type monitor struct {
    12  	fd     int
    13  	closed bool
    14  }
    15  
    16  func (m *monitor) Read(p []byte) (int, error) {
    17  	n, err := unix.Read(m.fd, p)
    18  	if m.closed {
    19  		return 0, io.EOF
    20  	}
    21  	return n, err
    22  }
    23  
    24  func (m *monitor) Close() error {
    25  	if m.closed {
    26  		return nil
    27  	}
    28  	m.closed = true
    29  	return unix.Close(m.fd)
    30  }
    31  

View as plain text