diff --git a/internal/usbgadget/hid_keyboard.go b/internal/usbgadget/hid_keyboard.go index 61b6115..c6134dd 100644 --- a/internal/usbgadget/hid_keyboard.go +++ b/internal/usbgadget/hid_keyboard.go @@ -146,6 +146,8 @@ func (u *UsbGadget) GetKeysDownState() KeysDownState { } func (u *UsbGadget) updateKeyDownState(state KeysDownState) { + u.log.Trace().Interface("old", u.keysDownState).Interface("new", state).Msg("acquiring keyboardStateLock for updateKeyDownState") + u.keyboardStateLock.Lock() defer u.keyboardStateLock.Unlock() @@ -242,7 +244,7 @@ func (u *UsbGadget) keyboardWriteHidFile(modifier byte, keys []byte) error { return err } - _, err := writeWithTimeout(u.keyboardHidFile, append([]byte{modifier, 0x00}, keys[:hidKeyBufferSize]...)) + _, err := u.writeWithTimeout(u.keyboardHidFile, append([]byte{modifier, 0x00}, keys[:hidKeyBufferSize]...)) if err != nil { u.logWithSuppression("keyboardWriteHidFile", 100, u.log, err, "failed to write to hidg0") u.keyboardHidFile.Close() diff --git a/internal/usbgadget/hid_mouse_absolute.go b/internal/usbgadget/hid_mouse_absolute.go index 4f6f8d7..374844f 100644 --- a/internal/usbgadget/hid_mouse_absolute.go +++ b/internal/usbgadget/hid_mouse_absolute.go @@ -74,7 +74,7 @@ func (u *UsbGadget) absMouseWriteHidFile(data []byte) error { } } - _, err := writeWithTimeout(u.absMouseHidFile, data) + _, err := u.writeWithTimeout(u.absMouseHidFile, data) if err != nil { u.logWithSuppression("absMouseWriteHidFile", 100, u.log, err, "failed to write to hidg1") u.absMouseHidFile.Close() diff --git a/internal/usbgadget/hid_mouse_relative.go b/internal/usbgadget/hid_mouse_relative.go index 25ec2c1..070db6e 100644 --- a/internal/usbgadget/hid_mouse_relative.go +++ b/internal/usbgadget/hid_mouse_relative.go @@ -64,7 +64,7 @@ func (u *UsbGadget) relMouseWriteHidFile(data []byte) error { } } - _, err := writeWithTimeout(u.relMouseHidFile, data) + _, err := u.writeWithTimeout(u.relMouseHidFile, data) if err != nil { u.logWithSuppression("relMouseWriteHidFile", 100, u.log, err, "failed to write to hidg2") u.relMouseHidFile.Close() diff --git a/internal/usbgadget/utils.go b/internal/usbgadget/utils.go index 6c295d6..d51f9e4 100644 --- a/internal/usbgadget/utils.go +++ b/internal/usbgadget/utils.go @@ -110,7 +110,7 @@ func compareFileContent(oldContent []byte, newContent []byte, looserMatch bool) return false } -func writeWithTimeout(file *os.File, data []byte) (n int, err error) { +func (u *UsbGadget) writeWithTimeout(file *os.File, data []byte) (n int, err error) { if err := file.SetWriteDeadline(time.Now().Add(hidWriteTimeout)); err != nil { return -1, err } @@ -121,6 +121,14 @@ func writeWithTimeout(file *os.File, data []byte) (n int, err error) { } if errors.Is(err, os.ErrDeadlineExceeded) { + u.logWithSuppression( + fmt.Sprintf("writeWithTimeout_%s", file.Name()), + 1000, + u.log, + err, + "write timed out: %s", + file.Name(), + ) err = nil }