=================================================================== RCS file: /MkLinux/floppy-darwin/floppy.cpp,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- floppy-darwin/floppy.cpp 2002/03/23 19:43:40 1.35 +++ floppy-darwin/floppy.cpp 2002/03/23 21:52:37 1.36 @@ -36,6 +36,9 @@ BSIORequestBlockPtr parentRequest, struct BSErrorList **errors); OSStatus FloppyPluginCleanup(BSStorePtr theStore); + +int non_bsd_sleep(void *event, unsigned long msec); +void non_bsd_wakeup(void *event); } caddr_t org_mklinux_swim3_vaddr[2]; @@ -117,7 +120,8 @@ return false; } - AsyncLock = IOLockAlloc(); + // AsyncLock = IOLockAlloc(); + non_bsd_wakeup((void *)&AsyncLock); DAG_Rules=OSDynamicCast(AppleMacIODevice, provider); @@ -329,7 +333,7 @@ FloppyPluginCleanup((BSStorePtr) NULL); - IOLockFree(AsyncLock); + // IOLockFree(AsyncLock); } static void org_mklinux_iokit_swim3_driver_NotifyMediaChange( @@ -408,7 +412,8 @@ memcpy(&args, &AsyncArgs, sizeof(swim3_async_args_t)); IOLog("swim3: unlocking AsyncLock\n"); - IOLockUnlock(AsyncLock); + // IOLockUnlock(AsyncLock); + non_bsd_wakeup((void *)&AsyncLock); IOLog("swim3: calling doSyncReadWrite asynchronously\n"); retval = doSyncReadWrite(args.buffer, args.block, args.nblks); @@ -426,7 +431,8 @@ #if 1 IOLog("swim3: taking AsyncLock\n"); - IOLockLock(AsyncLock); + // IOLockLock(AsyncLock); + non_bsd_sleep((void *)&AsyncLock, 0); AsyncArgs.buffer = buffer; AsyncArgs.block = block; AsyncArgs.nblks = nblks;