Rev 3626 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3626 | Rev 4265 | ||
---|---|---|---|
Line 1000... | Line 1000... | ||
1000 | ; with a new disk, those actions would be synchronous and would require |
1000 | ; with a new disk, those actions would be synchronous and would require |
1001 | ; waiting for results of USB requests, but we need to exit this callback |
1001 | ; waiting for results of USB requests, but we need to exit this callback |
1002 | ; to allow the USB thread to continue working and handling those requests. |
1002 | ; to allow the USB thread to continue working and handling those requests. |
1003 | ; 4. Thus, create a temporary kernel thread which would do it. |
1003 | ; 4. Thus, create a temporary kernel thread which would do it. |
1004 | mov edx, [esp+8] |
1004 | mov edx, [esp+8] |
1005 | push ebx ecx |
1005 | push ebx ecx esi edi |
1006 | movi eax, 51 |
- | |
1007 | movi ebx, 1 |
1006 | movi ebx, 1 |
1008 | mov ecx, new_disk_thread |
1007 | mov ecx, new_disk_thread |
1009 | ; edx = parameter |
1008 | ; edx = parameter |
1010 | int 0x40 |
1009 | call CreateThread |
1011 | pop ecx ebx |
1010 | pop edi esi ecx ebx |
1012 | cmp eax, -1 |
1011 | cmp eax, -1 |
1013 | jnz .nothing |
1012 | jnz .nothing |
1014 | ; on error, reverse step 3 |
1013 | ; on error, reverse step 3 |
1015 | lock dec [ecx+usb_device_data.NumReferences] |
1014 | lock dec [ecx+usb_device_data.NumReferences] |
1016 | .nothing: |
1015 | .nothing: |