xorriso  1.5.4.pl02
About: GNU xorriso creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions. It is suitable for incremental data backup and for production of bootable ISO 9660 images. GNU xorriso is a statical compilation of the libraries libburn, libisofs, libisoburn, and libjte.
  Fossies Dox: xorriso-1.5.4.pl02.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

transport.h
Go to the documentation of this file.
1 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
2 
3 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
4  Copyright (c) 2006 - 2020 Thomas Schmitt <scdbackup@gmx.net>
5  Provided under GPL version 2 or later.
6 */
7 
8 
9 #ifndef __TRANSPORT
10 #define __TRANSPORT
11 
12 #include "libburn.h"
13 #include "os.h"
14 
15 #include <pthread.h>
16 /* sg data structures */
17 #include <sys/types.h>
18 
19 
20 /* see os.h for name of particular os-*.h where this is defined */
21 #define BUFFER_SIZE BURN_OS_TRANSPORT_BUFFER_SIZE
22 
23 
26 
27 /* end of sg data structures */
28 
29 /* generic 'drive' data structures */
30 
31 struct cue_sheet
32 {
33  int count;
34  unsigned char *data;
35 };
36 
37 struct params
38 {
39  int speed;
40  int retries;
41 };
42 
43 struct buffer
44 {
45  /* ts A61219:
46  Added 4096 bytes reserve against possible buffer overflows.
47  (Changed in sector.c buffer flush test from >= to > BUFFER_SIZE .
48  This can at most cause a 1 sector overlap. Sometimes an offset
49  of 16 byte is applied to the output data (in some RAW mode). )
50  burn_write_opts.cdxa_conversion can imply an offset of 8 bytes.
51  */
52  unsigned char data[BUFFER_SIZE + 4096];
53  int sectors;
54  int bytes;
55 };
56 
57 struct command
58 {
59  unsigned char opcode[16];
60  int oplen;
61  int dir;
62  int dxfer_len;
63  unsigned char sense[128];
64  int sense_len;
65  int error;
66  int retry;
67  struct buffer *page;
68  int timeout; /* milliseconds */
69 
70  double start_time;
71  double end_time;
72 
77 };
78 
80 {
81  char peripheral; /* bit0-4: device type should be 5
82  bit5-7: qualifier must be 0 */
83 
84  char version; /* should be 3 (SPC-1) to 5 (SPC-3) (or higher ?)
85  but is often 0. */
86 
87  char vendor[9];
88  char product[17];
89  char revision[5];
90 
91  int valid;
92 };
93 
94 
96 {
97  int p2a_valid;
106  int cdr_read;
108  int simulate;
111 
116 
117  /* ts A61021 */
119 
120  /* ts A61225 : Results from ACh GET PERFORMANCE, Type 03h
121  Speed values go into *_*_speed */
125 
130 };
131 
132 
133 /* ts A70112 : represents a single Formattable Capacity Descriptor as of
134  mmc5r03c.pdf 6.24.3.3 . There can at most be 32 of them. */
136  /* format type: e.g 0x00 is "Full", 0x15 is "Quick" */
137  int type;
138 
139  /* the size in bytes derived from Number of Blocks */
140  off_t size;
141 
142  /* the Type Dependent Parameter (usually the write alignment size) */
143  unsigned int tdp;
144 };
145 
146 
147 /* ts B40106 : represents a Feature Descriptor as of mmc5r03c.pdf 5.2.2
148  There can be many of them. Thus a linked list.
149 */
151  unsigned short feature_code;
152 
153  unsigned char flags; /* bit0= current
154  bit1= persistent
155  bit2-5= version
156  */
157 
158  unsigned char data_lenght;
159 
160  /* Additional bytes after the first 4 bytes of the descriptor */
161  unsigned char *data;
162 
164 };
165 
166 
167 /** Gets initialized in enumerate_common() and burn_drive_register() */
169 {
170  /* ts A70902:
171  0=null-emulation
172  1=MMC drive ,
173  2=stdio random read-write
174  3=stdio sequential write-only
175  4=stdio random read-only
176  5=stdio random write-only
177  */
179 
180  int bus_no;
181  int host;
182  int id;
183  int channel;
184  int lun;
185  char *devname;
186 
187  /* ts A70302: mmc5r03c.pdf 5.3.2 Physical Interface Standard */
188  int phys_if_std; /* 1=SCSI, 2=ATAPI, 3,4,6=FireWire, 7=SATA, 8=USB */
189  char phys_if_name[80]; /* MMC-5 5.3.2 table 91 , e.g. "SCSI Family" */
190 
191  /* see os.h for name of particular os-*.h where this is defined */
193 
194 
195  /* ts A60904 : ticket 62, contribution by elmom */
196  /**
197  Tells the index in scanned burn_drive_info array.
198  -1 if fallen victim to burn_drive_info_forget()
199  */
201 
202  pthread_mutex_t access_lock;
203 
205  int erasable;
206 
207  /* ts A61201 from 46h GET CONFIGURATION */
212  /* ts A90603 */
214  /* ts A90815 */
215  unsigned char all_profiles[256];
217 
218  /* ts B40106 : All feature descriptors as read from drive */
220 
221  /* ts A70128 : MMC-to-MMC feature info from 46h for DVD-RW.
222  Quite internal. Regard as opaque :)
223  */
224  /* 1 = incremental recording available, 0 = not available */
226 
227  /* Some drives announce feature 21h on fast-blanked DVD-RW
228  although they cannot write them in Incremental mode.
229  0= does not look like the recent write run failed due to
230  Incremental on fast blanked DVD-RW
231  1= it seems to have happened
232  2= it seems to have happened with write address 0
233  */
235 
236  /* Link Size item number 0 from feature 0021h descriptor */
238 
239  /* Flags from feature 0023h for formatting BD mmc5r03c.pdf 5.3.13
240  Byte 4 BD-RE:
241  bit0= Cert format 30h sub-type 10b
242  bit1= QCert format 30h sub-type 11b
243  bit2= Expand format 01h
244  bit3= RENoSA format 31h
245  Byte 8 BD-R:
246  bit0= RRM format 32h sub-type 10b
247  */
250 
251 
252  /* Flags from feature 002Fh feature descriptor mmc5r03c.pdf 5.3.25 :
253  bit1= DVD-RW supported
254  bit2= Test Write available
255  bit3= DVD-R DL supported
256  bit6= Buffer Under-run Free recording available (page 05h BUFE)
257  Value -1 indicates that no 002Fh was current in the features list.
258  */
260 
261  /* ts B51016 : Result from feature 108h : Drive Serial Number
262  */
265 
266  /* ts B51016 : Result from command AB READ MEDIA SERIAL NUMBER
267  */
270 
271  /* ts B10524 : whether the damage bit was set for the future track.
272  bit0= damage bit , bit1= nwa valid bit
273  */
275 
276  /* ts A70114 : whether a DVD-RW media holds an incomplete session
277  (which could need closing after write) */
279  /* ts A71003 : whether a random write operation was done and no
280  synchronize cache has happened yet */
282 
283  /* ts A80412 : whether to use WRITE12 with Streaming bit set
284  rather than WRITE10. Speeds up DVD-RAM. Might help
285  with BD-RE */
287 
288  /* ts A90227 : the LBA where stream recording shall start.
289  Writing to lower LBA will be done without streaming.
290  */
292 
293  /* ts A61218 from 51h READ DISC INFORMATION */
296  int num_opc_tables; /* ts A91104: -1= not yet known */
297  int bg_format_status; /* 0=needs format start, 1=needs format restart*/
298  int disc_type; /* 0="CD-DA or CD-ROM", 0x10="CD-I", 0x20="CD-ROM XA" */
299  unsigned int disc_id; /* a "32 bit binary integer" */
300  char disc_bar_code[9];
302  int disc_info_valid; /* bit0= disc_type , bit1= disc_id ,
303  bit2= disc_bar_code , bit3= disc_app_code
304  bit4= URU bit is set (= unrestricted use)
305  bit5= Erasable bit was set in reply
306  */
307 
308  /* ts A70108 from 23h READ FORMAT CAPACITY mmc5r03c.pdf 6.24 */
309  int format_descr_type; /* 1=unformatted, 2=formatted, 3=unclear */
310  off_t format_curr_max_size; /* meaning depends on format_descr_type */
311  unsigned int format_curr_blsas; /* dito */
314 
315  /* The complete list of format descriptors as read with 23h */
318 
319 
320  volatile int released;
321 
322  /* ts A61106 */
323  /* 0= report errors
324  1= do not report errors
325  2= do not report errors which the libburn function indicates in
326  member .had_particular_error
327  3= report errors with severity DEBUG
328  */
330 
331  /* ts B21023 */
332  /* bit0= 5 64 00 occurred with READ10 in mmc_read_10()
333  */
335 
336  int stdio_fd;
337 
338  int nwa; /* next writeable address */
339  int alba; /* absolute lba */
340  int rlba; /* relative lba in section */
342  int end_lba;
343 
344  /* ts B61116 */
346 
347  /* ts A70131 : from 51h READ DISC INFORMATION Number of Sessions (-1)*/
349  /* ts A90107 */
351 
352 #ifdef Libburn_disc_with_incomplete_sessioN
353  /* ts B30112 */
355 #endif
356 
357 
358  /* ts A70129 :
359  from 51h READ DISC INFORMATION Last Track Number in Last Session */
361 
362  /* ts B10730 : whether a default mode page 05 was already sent.
363  */
365  /* ts A70212 : from various sources : free space on media (in bytes)
366  With CD this might change after particular write
367  parameters have been set and nwa has been inquired.
368  (e.g. by d->send_write_parameters() ; d->get_nwa()).
369  */
371  /* ts A70215 : if > 0 : first lba on media that is too high for write*/
373 
374  /* ts A81210 : Upper limit of readable data size,
375  0x7fffffff = unknown
376  0x7ffffff0 = 32 bit overflow, or unknown stdio size
377  */
379  /* ts B60305 : Whether READ CAPACITY of CD is credible:
380  -1= no READ CAPACITY yet , 0= untrusted READ CAPACITY
381  1= READ CAPACITY confirmed or corrected by other commands
382  */
384 
385  /* ts B10314 : Next Writeable Address for drive_role == 5 */
387 
388  /* ts B60730 */
390 
391  int toc_temp;
392  struct burn_disc *disc; /* disc structure */
393  int block_types[4];
394  struct buffer *buffer;
395  struct burn_progress progress;
396 
397  /* To be used by mmc.c, sbc.c, spc.c for SCSI commands where the struct
398  content surely does not have to persist while another command gets
399  composed and executed.
400  (Inherently, sending SCSI commands to the same drive cannot be
401  thread-safe. But there are functions which send SCSI commands
402  and also call other such functions. These shall use own allocated
403  command structs and not this struct here.)
404  */
405  struct command casual_command;
406 
407  /* ts A70711 : keeping an eye on the drive buffer */
412  unsigned int wfb_min_usec;
413  unsigned int wfb_max_usec;
414  unsigned int wfb_timeout_sec;
415  unsigned int wfb_min_percent;
416  unsigned int wfb_max_percent;
417  unsigned int pessimistic_writes;
418  unsigned int waited_writes;
419  unsigned int waited_tries;
420  unsigned int waited_usec;
421 
422  volatile int cancel;
423  volatile enum burn_drive_status busy;
424 
425  /* During write runs, this points to a copy of the applied
426  struct burn_write_opts. Only read this underneath
427  burn_disc_write_sync() which removes the copy when done.
428  Especially do not read it from outside the write thread.
429  */
431 
432  /* ts A70929 */
433  pid_t thread_pid;
435  /* ts B00225 */
436  pthread_t thread_tid;
437 
438  /* ts B90513 */
439  unsigned int write_retry_count;
440 
441  /* ts C00806 */
442  /* 0=no change, 1=change, -1=already urged OS to revalidate medium */
444 
445  /* ts C00822 */
446  /* If set, use Exact bit with SET STREAMING and use SET STREAMING
447  even if the medium is a CD.
448  */
451 
452 /* transport functions */
453  int (*grab) (struct burn_drive *);
454  int (*release) (struct burn_drive *);
455 
456  /* ts A61021 */
457  int (*drive_is_open) (struct burn_drive *);
458 
459  int (*issue_command) (struct burn_drive *, struct command *);
460 
461 /* lower level functions */
462  void (*erase) (struct burn_drive *, int);
463  void (*getcaps) (struct burn_drive *);
464 
465  /* ts A61021 */
466  void (*read_atip) (struct burn_drive *);
467 
468  int (*write) (struct burn_drive *, int, struct buffer *);
469  void (*read_toc) (struct burn_drive *);
470  void (*lock) (struct burn_drive *);
471  void (*unlock) (struct burn_drive *);
472  void (*eject) (struct burn_drive *);
473  void (*load) (struct burn_drive *);
474  int (*start_unit) (struct burn_drive *);
475 
476  /* ts A90824 : Calming down noisy drives */
477  int (*stop_unit) (struct burn_drive *);
479 
480  void (*read_disc_info) (struct burn_drive *);
481  int (*read_cd) (struct burn_drive *, int start, int len,
482  int sec_type, int main_ch,
483  const struct burn_read_opts *, struct buffer *,
484  int flag);
485  void (*perform_opc) (struct burn_drive *);
486  void (*set_speed) (struct burn_drive *, int, int);
487  void (*send_parameters) (struct burn_drive *,
488  const struct burn_read_opts *);
490  struct burn_session *, int tno,
491  const struct burn_write_opts *);
492  int (*send_cue_sheet) (struct burn_drive *, struct cue_sheet *);
493 
494  /* ts A70205 : Announce size of a DVD-R[W] DAO session. */
495  int (*reserve_track) (struct burn_drive *d, off_t size);
496 
497  void (*sync_cache) (struct burn_drive *);
498  int (*get_erase_progress) (struct burn_drive *);
499  int (*get_nwa) (struct burn_drive *, int trackno, int *lba, int *nwa);
500 
501  /* ts A70131 : obtain (possibly fake) TOC number and start lba of
502  first track in last complete session */
504  int *trackno, int *start);
505 
506  /* ts A61009 : removed d in favor of o->drive */
507  /* void (*close_disc) (struct burn_drive * d,
508  struct burn_write_opts * o);
509  void (*close_session) (struct burn_drive * d,
510  struct burn_write_opts * o);
511  */
512  void (*close_disc) (struct burn_write_opts * o);
513  void (*close_session) ( struct burn_write_opts * o);
514 
515  /* ts A61029 */
516  void (*close_track_session) ( struct burn_drive *d,
517  int session, int track);
518 
519  int (*test_unit_ready) (struct burn_drive * d);
520  void (*probe_write_modes) (struct burn_drive * d);
521  struct params params;
526 
527  /* ts A61023 : get size and free space of drive buffer */
528  int (*read_buffer_capacity) (struct burn_drive *d);
529 
530  /* ts A61220 : format media (e.g. DVD+RW) */
531  int (*format_unit) (struct burn_drive *d, off_t size, int flag);
532 
533  /* ts A70108 */
534  /* mmc5r03c.pdf 6.24 : get list of available formats */
535  int (*read_format_capacities) (struct burn_drive *d, int top_wanted);
536 
537  /* ts A70812 */
538  /* mmc5r03c.pdf 6.15 : read data sectors (start and amount in LBA) */
539  int (*read_10) (struct burn_drive *d, int start, int amount,
540  struct buffer *buf);
541 
542 };
543 
544 /* end of generic 'drive' data structures */
545 
546 /* ts A80422 : centralizing this setting for debugging purposes
547 */
548 int burn_drive_set_media_capacity_remaining(struct burn_drive *d, off_t value);
549 
550 
551 #endif /* __TRANSPORT */
burn_drive_status
Definition: libburn.h:293
burn_disc_status
Definition: libburn.h:232
#define BURN_OS_TRANSPORT_DRIVE_ELEMENTS
Definition: os-dummy.h:86
unsigned char data[65536+4096]
Definition: transport.h:52
int bytes
Definition: transport.h:54
int sectors
Definition: transport.h:53
int(* test_unit_ready)(struct burn_drive *d)
Definition: transport.h:519
off_t best_format_size
Definition: transport.h:313
enum burn_disc_status status
Definition: transport.h:204
void(* close_session)(struct burn_write_opts *o)
Definition: transport.h:513
int nominal_write_speed
Definition: transport.h:411
int was_feat21h_failure
Definition: transport.h:234
int stdio_fd
Definition: transport.h:336
void(* probe_write_modes)(struct burn_drive *d)
Definition: transport.h:520
char current_profile_text[80]
Definition: transport.h:209
int(* grab)(struct burn_drive *)
Definition: transport.h:453
unsigned int wfb_min_percent
Definition: transport.h:415
int media_serial_number_len
Definition: transport.h:269
int needs_close_session
Definition: transport.h:278
struct burn_write_opts * write_opts
Definition: transport.h:430
struct burn_progress progress
Definition: transport.h:395
unsigned int wfb_min_usec
Definition: transport.h:412
int num_profiles
Definition: transport.h:216
int current_is_cd_profile
Definition: transport.h:210
int do_stream_recording
Definition: transport.h:286
int disc_info_valid
Definition: transport.h:302
int(* get_erase_progress)(struct burn_drive *)
Definition: transport.h:498
int(* get_nwa)(struct burn_drive *, int trackno, int *lba, int *nwa)
Definition: transport.h:499
unsigned int wfb_max_usec
Definition: transport.h:413
int next_track_damaged
Definition: transport.h:274
void(* close_disc)(struct burn_write_opts *o)
Definition: transport.h:512
int current_feat23h_byte8
Definition: transport.h:249
unsigned int disc_id
Definition: transport.h:299
int do_simulate
Definition: transport.h:345
int current_has_feat21h
Definition: transport.h:225
int media_read_capacity
Definition: transport.h:378
int global_index
Definition: transport.h:200
int sent_default_page_05
Definition: transport.h:364
unsigned int format_curr_blsas
Definition: transport.h:311
volatile int released
Definition: transport.h:320
int mr_capacity_trusted
Definition: transport.h:383
struct buffer * buffer
Definition: transport.h:394
int medium_state_changed
Definition: transport.h:443
char * drive_serial_number
Definition: transport.h:263
int current_feat2fh_byte4
Definition: transport.h:259
char * devname
Definition: transport.h:185
off_t format_curr_max_size
Definition: transport.h:310
int toc_entries
Definition: transport.h:524
struct burn_format_descr format_descriptors[32]
Definition: transport.h:317
int block_types[4]
Definition: transport.h:393
int last_track_no
Definition: transport.h:360
int current_is_guessed_profile
Definition: transport.h:213
int(* read_cd)(struct burn_drive *, int start, int len, int sec_type, int main_ch, const struct burn_read_opts *, struct buffer *, int flag)
Definition: transport.h:481
void(* lock)(struct burn_drive *)
Definition: transport.h:470
unsigned char all_profiles[256]
Definition: transport.h:215
struct burn_feature_descr * features
Definition: transport.h:219
int(* read_10)(struct burn_drive *d, int start, int amount, struct buffer *buf)
Definition: transport.h:539
unsigned int waited_tries
Definition: transport.h:419
int bus_no
Definition: transport.h:180
struct burn_toc_entry * toc_entry
Definition: transport.h:525
int silent_on_scsi_error
Definition: transport.h:329
char disc_bar_code[9]
Definition: transport.h:300
void(* read_atip)(struct burn_drive *)
Definition: transport.h:466
struct command casual_command
Definition: transport.h:405
int disc_type
Definition: transport.h:298
int(* stop_unit)(struct burn_drive *)
Definition: transport.h:477
int(* write)(struct burn_drive *, int, struct buffer *)
Definition: transport.h:468
int set_streaming_exact_bit
Definition: transport.h:449
int role_5_nwa
Definition: transport.h:386
int best_format_type
Definition: transport.h:312
int num_opc_tables
Definition: transport.h:296
int num_format_descr
Definition: transport.h:316
int(* read_format_capacities)(struct burn_drive *d, int top_wanted)
Definition: transport.h:535
int drive_serial_number_len
Definition: transport.h:264
void(* sync_cache)(struct burn_drive *)
Definition: transport.h:497
unsigned int waited_writes
Definition: transport.h:418
int current_feat23h_byte4
Definition: transport.h:248
char phys_if_name[80]
Definition: transport.h:189
struct burn_disc * disc
Definition: transport.h:392
int start_lba
Definition: transport.h:341
int erasable
Definition: transport.h:205
int(* read_buffer_capacity)(struct burn_drive *d)
Definition: transport.h:528
int channel
Definition: transport.h:183
int pbf_altered
Definition: transport.h:409
pthread_mutex_t access_lock
Definition: transport.h:202
pid_t thread_pid
Definition: transport.h:433
int(* send_cue_sheet)(struct burn_drive *, struct cue_sheet *)
Definition: transport.h:492
int had_particular_error
Definition: transport.h:334
unsigned int write_retry_count
Definition: transport.h:439
unsigned int pessimistic_writes
Definition: transport.h:417
int(* read_multi_session_c1)(struct burn_drive *d, int *trackno, int *start)
Definition: transport.h:503
volatile int cancel
Definition: transport.h:422
void(* read_disc_info)(struct burn_drive *)
Definition: transport.h:480
void(* send_write_parameters)(struct burn_drive *, struct burn_session *, int tno, const struct burn_write_opts *)
Definition: transport.h:489
int current_profile
Definition: transport.h:208
int disc_app_code
Definition: transport.h:301
int(* start_unit)(struct burn_drive *)
Definition: transport.h:474
void(* eject)(struct burn_drive *)
Definition: transport.h:472
int(* drive_is_open)(struct burn_drive *)
Definition: transport.h:457
void(* unlock)(struct burn_drive *)
Definition: transport.h:471
int media_lba_limit
Definition: transport.h:372
int needs_sync_cache
Definition: transport.h:281
struct scsi_mode_data * mdata
Definition: transport.h:523
void(* read_toc)(struct burn_drive *)
Definition: transport.h:469
int last_lead_in
Definition: transport.h:294
void(* send_parameters)(struct burn_drive *, const struct burn_read_opts *)
Definition: transport.h:487
int last_lead_out
Definition: transport.h:295
int(* reserve_track)(struct burn_drive *d, off_t size)
Definition: transport.h:495
int(* format_unit)(struct burn_drive *d, off_t size, int flag)
Definition: transport.h:531
void(* close_track_session)(struct burn_drive *d, int session, int track)
Definition: transport.h:516
int set_streaming_err
Definition: transport.h:450
int current_is_supported_profile
Definition: transport.h:211
int phys_if_std
Definition: transport.h:188
int incomplete_sessions
Definition: transport.h:354
unsigned int waited_usec
Definition: transport.h:420
int complete_sessions
Definition: transport.h:348
void(* load)(struct burn_drive *)
Definition: transport.h:473
enum burn_drive_status busy
Definition: transport.h:423
unsigned int wfb_timeout_sec
Definition: transport.h:414
int do_no_immed
Definition: transport.h:389
void(* erase)(struct burn_drive *, int)
Definition: transport.h:462
unsigned int wfb_max_percent
Definition: transport.h:416
int current_feat21h_link_size
Definition: transport.h:237
void(* getcaps)(struct burn_drive *)
Definition: transport.h:463
off_t pessimistic_buffer_free
Definition: transport.h:408
int thread_pid_valid
Definition: transport.h:434
int stream_recording_start
Definition: transport.h:291
int format_descr_type
Definition: transport.h:309
int is_stopped
Definition: transport.h:478
void(* set_speed)(struct burn_drive *, int, int)
Definition: transport.h:486
off_t media_capacity_remaining
Definition: transport.h:370
int wait_for_buffer_free
Definition: transport.h:410
int drive_role
Definition: transport.h:178
char * media_serial_number
Definition: transport.h:268
void(* perform_opc)(struct burn_drive *)
Definition: transport.h:485
struct burn_scsi_inquiry_data * idata
Definition: transport.h:522
int state_of_last_session
Definition: transport.h:350
int bg_format_status
Definition: transport.h:297
int toc_temp
Definition: transport.h:391
pthread_t thread_tid
Definition: transport.h:436
int(* issue_command)(struct burn_drive *, struct command *)
Definition: transport.h:459
int(* release)(struct burn_drive *)
Definition: transport.h:454
int end_lba
Definition: transport.h:342
unsigned char flags
Definition: transport.h:153
struct burn_feature_descr * next
Definition: transport.h:163
unsigned char * data
Definition: transport.h:161
unsigned char data_lenght
Definition: transport.h:158
unsigned short feature_code
Definition: transport.h:151
unsigned int tdp
Definition: transport.h:143
Definition: libburn.h:351
int retry
Definition: transport.h:66
unsigned char sense[128]
Definition: transport.h:63
int sense_len
Definition: transport.h:64
int oplen
Definition: transport.h:60
int last_retry_ascq
Definition: transport.h:76
int dxfer_len
Definition: transport.h:62
double start_time
Definition: transport.h:70
int timeout
Definition: transport.h:68
int last_retry_key
Definition: transport.h:74
double end_time
Definition: transport.h:71
int retry_count
Definition: transport.h:73
int error
Definition: transport.h:65
int dir
Definition: transport.h:61
struct buffer * page
Definition: transport.h:67
int last_retry_asc
Definition: transport.h:75
unsigned char opcode[16]
Definition: transport.h:59
int count
Definition: transport.h:33
unsigned char * data
Definition: transport.h:34
int speed
Definition: transport.h:39
int retries
Definition: transport.h:40
int retry_page_length
Definition: transport.h:126
int cur_write_speed
Definition: transport.h:115
struct burn_speed_descriptor * speed_descriptors
Definition: transport.h:124
int underrun_proof
Definition: transport.h:110
int max_write_speed
Definition: transport.h:114
int write_page_length
Definition: transport.h:128
int max_read_speed
Definition: transport.h:112
int cur_read_speed
Definition: transport.h:113
int retry_page_valid
Definition: transport.h:127
int write_page_valid
Definition: transport.h:129
int min_write_speed
Definition: transport.h:118
transfer_direction
Definition: transport.h:25
@ TO_DRIVE
Definition: transport.h:25
@ FROM_DRIVE
Definition: transport.h:25
@ NO_TRANSFER
Definition: transport.h:25
#define BUFFER_SIZE
Definition: transport.h:21
int burn_drive_set_media_capacity_remaining(struct burn_drive *d, off_t value)
Definition: drive.c:3411