delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2022/11/10/04:08:44

X-Recipient: archive-cygwin AT delorie DOT com
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 62C9E3858D35
Authentication-Results: sourceware.org;
dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
:date:message-id:reply-to;
bh=SjwRUlwAQQvY7cUCGHetxWoOFh3V7kPgmKkuT+jn+Uo=;
b=eGlJzSMLwmGgJm+BKc5ox50S2lUtVxtq5RAAFOBKlIkvFd7cpLOskM4qrXmeT0/zgF
U1wbBX443Zc9BaPN5aV+u1G4KAtF83MHJLSaTgGM5muaXzx9XHFvF74cDXLmxdlzPJgm
Vb6grQ2XiXrddUtKqH+QJ03cjtls/7X+lxrjrOEBeWXEQWOka4brPWzZE1QO21t48biH
GbKcK91TGOjlVbjK6WrH61cBWJdhvK+c6T0jucnkhFq2WxZFVaaPYHdYE6L/OknlZ8md
2ohvB6A+BCUmpvZqxUkXADhhcEjgY3FT6VYmGkrt/mgCVB2ysq1dE+AwfXRfnUcb6coa
Ob5w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20210112;
h=to:subject:message-id:date:from:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=SjwRUlwAQQvY7cUCGHetxWoOFh3V7kPgmKkuT+jn+Uo=;
b=j7zq2P0IvvO/g6FTu5YWmxqv1ZBNm6Z5it6zX5ytvV5qznKp2AETOCbM4r7gyOelLL
WfK5V1+T8v5jiEScJKoQoxyHquwjwUsl3qIoFW1s5PbAh3xwI4Pyzh5i/eujVaG679sj
t2qp6N7iXndcmy4fS5mMatEZLtYKtuTxBGVVoqVVHmdWW2gn/uP1yiDgJvzpGnwGlN01
BmMj/PBx/9nrqFws5cdnDFwURbDZHHQjaZxbMgnZw37jj9O8KW8+hCI4UXq678evF/qC
iHoA5pnkLqkKpEHSGGRisWOdhDUT0jauXcBgYHcTny1xbyoy+IVJUsFHRKKaWDFqep5G
ct7Q==
X-Gm-Message-State: ACrzQf0d+vaKFng5QGBRYSzfaYDq87pSqlhIFrbO6eB0llWfAvPw4DXG
JboPXCioePcltTts61NjtejzF9E2zKevtsuCEY4ivjQZBSU=
X-Google-Smtp-Source: AMsMyM4g8fpsD4WfpUgq3YXj5ee8P4I84p15SKNuGDk5ZRSk/YZTXAF69HK1lUFiJDf9neAEIeguAcUx2FnVsNLUjrY=
X-Received: by 2002:a05:600c:3655:b0:3cf:7082:dc18 with SMTP id
y21-20020a05600c365500b003cf7082dc18mr38515409wmq.36.1668071231061; Thu, 10
Nov 2022 01:07:11 -0800 (PST)
MIME-Version: 1.0
From: "Carlo B." <carlo DOT bramini AT gmail DOT com>
Date: Thu, 10 Nov 2022 10:07:01 +0100
Message-ID: <CADt9575fzjVLgAwB0EScK=0CZr_dBCCs_bE3VrVuDFUH-MFRTg@mail.gmail.com>
Subject: PATCH: TIOCMBIS/TIOCMBIC not working when using usbser.sys
To: The Cygwin Mailing List <cygwin AT cygwin DOT com>
X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00, DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,
SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on
server2.sourceware.org
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.29
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
Sender: "Cygwin" <cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com>

--00000000000030283805ed1a1953
Content-Type: text/plain; charset="UTF-8"

Hello,
into winsup/cygwin/fhandler/serial.cc, the function
fhandler_serial::switch_modem_lines() is called when TIOCMBIS/TIOCMBIC
are used into an ioctl() call.
This function uses EscapeCommFunction() for setting and resetting RTS
and DTR signals of a serial port.
Unfortunately, this function does not work on USB CDC devices.
This is not a true bug of a CYGWIN but an issue of the usbser.sys
driver from Microsoft, from Windows 2000 to the latest Windows 11.
Both 32bit and 64bit versions of the operating system are affected.
Actually, I tested EscapeCommFunction() also when using a real UART,
based on the traditional 16550 driver and it works fine.
Using thirdy party CDC drivers, like the one provided by FTDI for
their USB bridge chips, probably also works.
However, it is also possible to drive the RTS/DTR signals by writing
their state with SetCommState(), which proved to be working fine all
types of connection.

Here, I attached a patch that I made for fixing this issue.
Anyways, in my opinion this is also a better solution for handling
these signals since RTS/DTR can be set at the same time rather than
having two separate calls with a visible delay between them.

I was wondering if this fix could be imported into the core of CYGWIN
and if it could be possible to include it also into the v3.3.x branch,
since I have seen that 32bit support has been removed from Master
branch recently.

Thank you very much for your time.

Sincerely,

Carlo Bramini.

--00000000000030283805ed1a1953
Content-Type: application/octet-stream; 
	name="winsup_cygwin_fhandler_serial.cc.patch"
Content-Disposition: attachment; 
	filename="winsup_cygwin_fhandler_serial.cc.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_laauiw440>
X-Attachment-Id: f_laauiw440

ZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIvc2VyaWFsLmNjIGIvd2luc3VwL2N5
Z3dpbi9maGFuZGxlci9zZXJpYWwuY2MKaW5kZXggMTc0YTU3YTQzLi41OGE4ZGY2NzcgMTAwNjQ0
Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIvc2VyaWFsLmNjCisrKyBiL3dpbnN1cC9jeWd3
aW4vZmhhbmRsZXIvc2VyaWFsLmNjCkBAIC0zOTEsNTAgKzM5MSwzOSBAQCBmaGFuZGxlcl9zZXJp
YWw6OnRjZmxvdyAoaW50IGFjdGlvbikKIGludAogZmhhbmRsZXJfc2VyaWFsOjpzd2l0Y2hfbW9k
ZW1fbGluZXMgKGludCBzZXQsIGludCBjbHIpCiB7Ci0gIGludCByZXMgPSAwOwotCi0gIGlmIChz
ZXQgJiBUSU9DTV9SVFMpCi0gICAgewotICAgICAgaWYgKEVzY2FwZUNvbW1GdW5jdGlvbiAoZ2V0
X2hhbmRsZSAoKSwgU0VUUlRTKSkKLQlydHMgPSBUSU9DTV9SVFM7Ci0gICAgICBlbHNlCi0Jewot
CSAgX19zZXRlcnJubyAoKTsKLQkgIHJlcyA9IC0xOwotCX0KLSAgICB9Ci0gIGVsc2UgaWYgKGNs
ciAmIFRJT0NNX1JUUykKLSAgICB7Ci0gICAgICBpZiAoRXNjYXBlQ29tbUZ1bmN0aW9uIChnZXRf
aGFuZGxlICgpLCBDTFJSVFMpKQotCXJ0cyA9IDA7Ci0gICAgICBlbHNlCi0JewotCSAgX19zZXRl
cnJubyAoKTsKLQkgIHJlcyA9IC0xOwotCX0KLSAgICB9Ci0gIGlmIChzZXQgJiBUSU9DTV9EVFIp
CisgIGlmICgoc2V0ICYgKFRJT0NNX1JUUyB8IFRJT0NNX0RUUikpIHx8IChjbHIgJiAoVElPQ01f
UlRTIHwgVElPQ01fRFRSKSkpCiAgICAgewotICAgICAgaWYgKEVzY2FwZUNvbW1GdW5jdGlvbiAo
Z2V0X2hhbmRsZSAoKSwgU0VURFRSKSkKLQlydHMgPSBUSU9DTV9EVFI7CisgICAgICBEQ0IgZGNi
OworCisgICAgICBtZW1zZXQoJmRjYiwwLHNpemVvZihkY2IpKTsKKyAgICAgIGRjYi5EQ0JsZW5n
dGggPSBzaXplb2YoZGNiKTsKKworICAgICAgaWYgKCFHZXRDb21tU3RhdGUoZ2V0X2hhbmRsZSgp
LCAmZGNiKSkKKyAgICAgICAgeworICAgICAgICAgIF9fc2V0ZXJybm8gKCk7CisgICAgICAgICAg
cmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgIGlmIChzZXQgJiBUSU9DTV9SVFMpCisgICAg
ICAgIGRjYi5mUnRzQ29udHJvbCA9IFJUU19DT05UUk9MX0VOQUJMRTsKICAgICAgIGVsc2UKLQl7
Ci0JICBfX3NldGVycm5vICgpOwotCSAgcmVzID0gLTE7Ci0JfQotICAgIH0KLSAgZWxzZSBpZiAo
Y2xyICYgVElPQ01fRFRSKQotICAgIHsKLSAgICAgIGlmIChFc2NhcGVDb21tRnVuY3Rpb24gKGdl
dF9oYW5kbGUgKCksIENMUkRUUikpCi0JcnRzID0gMDsKKyAgICAgIGlmIChjbHIgJiBUSU9DTV9S
VFMpCisgICAgICAgIGRjYi5mUnRzQ29udHJvbCA9IFJUU19DT05UUk9MX0RJU0FCTEU7CisKKyAg
ICAgIGlmIChzZXQgJiBUSU9DTV9EVFIpCisgICAgICAgIGRjYi5mUnRzQ29udHJvbCA9IERUUl9D
T05UUk9MX0VOQUJMRTsKICAgICAgIGVsc2UKLQl7Ci0JICBfX3NldGVycm5vICgpOwotCSAgcmVz
ID0gLTE7Ci0JfQorICAgICAgaWYgKGNsciAmIFRJT0NNX0RUUikKKyAgICAgICAgZGNiLmZSdHND
b250cm9sID0gRFRSX0NPTlRST0xfRElTQUJMRTsKKworICAgICAgaWYgKCFTZXRDb21tU3RhdGUo
Z2V0X2hhbmRsZSgpLCAmZGNiKSkKKyAgICAgICAgeworICAgICAgICAgIF9fc2V0ZXJybm8gKCk7
CisgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgfQogCi0gIHJldHVybiByZXM7
CisgIHJldHVybiAwOwogfQogCiAvKiBpb2N0bDogKi8K
--00000000000030283805ed1a1953
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

--00000000000030283805ed1a1953--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019