Taking synchronous read/write into respect with abort handling

ZeroFourZero
Thomas Schmitt 15 years ago
parent f37e109aa1
commit c6bc4a5e97
  1. 2
      cdrskin/cdrskin_timestamp.h
  2. 4
      libburn/drive.c
  3. 12
      libburn/libburn.h
  4. 3
      libburn/read.c
  5. 4
      libburn/write.c

@ -1 +1 @@
#define Cdrskin_timestamP "2007.08.22.134731"
#define Cdrskin_timestamP "2007.08.22.173459"

@ -110,6 +110,7 @@ int burn_drive_is_released(struct burn_drive *d)
-1 = drive is closed (i.e. released explicitely)
0 = drive is open, not grabbed (after scan, before 1st grab)
1 = drive is grabbed but BURN_DRIVE_IDLE
2 = drive is grabbed, synchronous read/write interrupted
10 = drive is grabbing (BURN_DRIVE_GRABBING)
100 = drive is busy in cancelable state
1000 = drive is in non-cancelable state
@ -127,6 +128,9 @@ int burn_drive_is_occupied(struct burn_drive *d)
return 0;
if(d->busy == BURN_DRIVE_IDLE)
return 1;
if(d->busy == BURN_DRIVE_READING_SYNC ||
d->busy == BURN_DRIVE_WRITING_SYNC)
return 2;
if(d->busy == BURN_DRIVE_READING || d->busy == BURN_DRIVE_WRITING)
return 50;
return 1000;

@ -251,8 +251,16 @@ enum burn_drive_status
/* ts A61223 */
/** The drive is formatting media */
BURN_DRIVE_FORMATTING
BURN_DRIVE_FORMATTING,
/* ts A70822 */
/** The drive is busy in synchronous read (if you see this then it
has been interrupted) */
BURN_DRIVE_READING_SYNC,
/** The drive is busy in synchronous write (if you see this then it
has been interrupted) */
BURN_DRIVE_WRITING_SYNC
};

@ -322,7 +322,7 @@ int burn_read_data(struct burn_drive *d, off_t byte_address,
"Drive is busy on attempt to read data", 0, 0);
return 0;
}
d->busy = BURN_DRIVE_READING;
d->busy = BURN_DRIVE_READING_SYNC;
d->buffer = &buf;
start = byte_address / 2048;
@ -348,6 +348,7 @@ int burn_read_data(struct burn_drive *d, off_t byte_address,
wpt += 2048;
*data_count += 2048;
}
d->buffer = NULL;
d->busy = BURN_DRIVE_IDLE;
return 0;
}

@ -2027,7 +2027,7 @@ int burn_random_access_write(struct burn_drive *d, off_t byte_address,
"Drive is busy on attempt to write random access",0,0);
return 0;
}
d->busy = BURN_DRIVE_WRITING;
d->busy = BURN_DRIVE_WRITING_SYNC;
d->buffer = &buf;
start = byte_address / 2048;
@ -2053,6 +2053,6 @@ int burn_random_access_write(struct burn_drive *d, off_t byte_address,
d->sync_cache(d);
d->buffer = NULL;
d->busy = BURN_DRIVE_IDLE;
return(1);
return 1;
}

Loading…
Cancel
Save