OS/2, eCS & ArcaOS - Technical > Hardware
New ArcaOS USB driver.
Mike Kölling:
--- Quote from: Lars on November 24, 2021, 08:52:21 am ---What version is "the new USB driver"?
--- End quote ---
Hello Lars,
version is 12.10
Regards
Mike
Lars:
Yes, I saw that 12.10 is out. Ok, let's assume that is the version that Remy is talking about ...
I am just too lazy to update stuff that still does not work reliably. But maybe I'll give it a try in a VM (ArcaOS guest) and see if it solves that problems that I have in a VM.
Remy:
--- Quote from: Lars on November 24, 2021, 03:47:51 pm ---Yes, I saw that 12.10 is out. Ok, let's assume that is the version that Remy is talking about ...
I am just too lazy to update stuff that still does not work reliably. But maybe I'll give it a try in a VM (ArcaOS guest) and see if it solves that problems that I have in a VM.
--- End quote ---
Yes,
v12.10
Lars:
The error happens here in OS2DASD.DMD, in routine "VOID _loadds FAR NotifyDoneIORB (fpIORB)":
...
if ( ((PRPH)pDMWork->pRequest)->Cmd == PB_REQ_LIST)
NotifyDoneIORB_RLE(pIORB, (PPB_Read_Write) pDMWork->pRequest, pUnitCB);
else
{
NotifyDoneIORB_RP (pIORB, (PBYTE) pDMWork->pRequest, pUnitCB);
}
...
It happens because "pDMWork->pRequest" is NULL. This is an error within OS2DASD.DMD because it should itself save a request packet pointer to "pRequest" (it is not the ADD [USBMSD.ADD in this case] calling into OS2DASD.DMD, invoking this routine, that sets this pointer, but rather OS2DASD.DMD itself).
The only fix I see is to update OS2DASD.DMD to check if that pointer has a valid value:
if ((PRPH)pDMWork->pRequest)
{
if ( ((PRPH)pDMWork->pRequest)->Cmd == PB_REQ_LIST)
NotifyDoneIORB_RLE(pIORB, (PPB_Read_Write) pDMWork->pRequest, pUnitCB);
else
{
NotifyDoneIORB_RP (pIORB, (PBYTE) pDMWork->pRequest, pUnitCB);
}
}
One of the gazillion bugs that still linger in OS/2 code ...
Cheers,
Lars
Remy:
--- Quote from: Lars on November 25, 2021, 01:19:14 am ---The error happens here in OS2DASD.DMD, in routine "VOID _loadds FAR NotifyDoneIORB (fpIORB)":
...
if ( ((PRPH)pDMWork->pRequest)->Cmd == PB_REQ_LIST)
NotifyDoneIORB_RLE(pIORB, (PPB_Read_Write) pDMWork->pRequest, pUnitCB);
else
{
NotifyDoneIORB_RP (pIORB, (PBYTE) pDMWork->pRequest, pUnitCB);
}
...
It happens because "pDMWork->pRequest" is NULL. This is an error within OS2DASD.DMD because it should itself save a request packet pointer to "pRequest" (it is not the ADD [USBMSD.ADD in this case] calling into OS2DASD.DMD, invoking this routine, that sets this pointer, but rather OS2DASD.DMD itself).
The only fix I see is to update OS2DASD.DMD to check if that pointer has a valid value:
if ((PRPH)pDMWork->pRequest)
{
if ( ((PRPH)pDMWork->pRequest)->Cmd == PB_REQ_LIST)
NotifyDoneIORB_RLE(pIORB, (PPB_Read_Write) pDMWork->pRequest, pUnitCB);
else
{
NotifyDoneIORB_RP (pIORB, (PBYTE) pDMWork->pRequest, pUnitCB);
}
}
One of the gazillion bugs that still linger in OS/2 code ...
Cheers,
Lars
--- End quote ---
Great Lars,
I checked OS2DASD.DMD bldlevel and it is the same under ArcaOS 5.0.2 or 5.0.6
| Build Level Display Facility Version 6.12.675 Sep 25 2001
| (C) Copyright IBM Corporation 1993-2001
| Signature: @#IBM:14.105#@ IBM DASD Manager
| Vendor: IBM
| Revision: 14.105
| File Version: 14.105
| Description: IBM DASD Manager
Regards
Rémy
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version