server: Add support for pending write flag to the serial device. Take 2.
Wolfgang Walter
wine at stwm.de
Wed Oct 23 04:32:29 CDT 2013
Am Mittwoch, 23. Oktober 2013, 11:12:26 schrieben Sie:
> Wolfgang Walter <wine at stwm.de> wrote:
> > > ../../../tools/runtest -q -P wine -T ../../.. -M kernel32.dll -p
> > > kernel32_test.exe.so comm.c && touch comm.ok comm.c:860: Test failed:
> > > WaitCommEvent failed with a timeout
> > > comm.c:881: Test failed: WaitCommEvent error 997
> > > comm.c:882: Test failed: WaitCommEvent: expected EV_TXEMPTY, got 0
> > > comm.c:887: Test failed: WaitCommEvent used 1003 ms for waiting
> > > comm.c:2226: Tests skipped: interactive tests (set
> > > WINETEST_INTERACTIVE=1)
> > > make: *** [comm.ok] Error 4
> >
> > This is because the previous test fails: in the previous test wine
> > actually
> > write to the serial device and does not return with
> > ERROR_INVALID_PARAMETER.
> What is this "previous test" you are talking about? Obviously there is no
> a failing test which checks for ERROR_INVALID_PARAMETER in the output posted
> by Alexandre above. And it's worth to mention that these tests pass without
> failures here with and without an external hardware turned on (with the
> patch applied).
With privious test I mean the test which starts at line 836:
S(U(ovl_write)).Offset = 0;
S(U(ovl_write)).OffsetHigh = 0;
ovl_write.hEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
before = GetTickCount();
SetLastError(0xdeadbeef);
res = WriteFile(hcom, tbuf, sizeof(tbuf), &bytes, &ovl_write);
after = GetTickCount();
todo_wine
ok(!res && GetLastError() == ERROR_IO_PENDING, "WriteFile returned %d,
error %d\n", res, GetLastError());
todo_wine
ok(!bytes, "expected 0, got %u\n", bytes);
ok(after - before < 30, "WriteFile took %d ms to write %d Bytes at %d
Baud\n",
after - before, bytes, baud);
/* don't wait for WriteFile completion */
This tests sends 17 bytes but does not wait till all have been sent. So the
next test which fails under wine (comm.c:860: Test failed: WaitCommEvent
failed with a timeout) does not start with a empty tx queue. There should be a
sleep(TIMEOUT) after this test.
The test for ERROR_INVALID_PARAMETER before that one (starting at line 831)
does indeed not contribute any more to
comm.c:860: Test failed: WaitCommEvent failed with a timeout
any more. When we discussed this it did because then the the code still was:
SetLastError(0xdeadbeef);
res = WriteFile(hcom, tbuf, sizeof(tbuf), &bytes, NULL);
todo_wine
ok(!res, "WriteFile on an overlapped handle without ovl structure should
fail\n");
todo_wine
ok(GetLastError() == ERROR_INVALID_PARAMETER, "expected
ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
So then there were even more bytes pending in the tx queue.
Regards,
--
Wolfgang Walter
Studentenwerk München
Anstalt des öffentlichen Rechts
More information about the wine-devel
mailing list