1 typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
2 typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
3 typedef enum { READ_SHARED = 0, WRITE_EXCLUSIVE = 1,
4     READ_EXCLUSIVE = 2, EXCLUSIVE_ACCESS = 3 } scsires_access_mode;
5 struct scsires_extent_elem {
6     scsires_access_mode mode;
7     unsigned relative_address;
8     u_int32_t first_block;
9     u_int32_t length;
10 };
11 typedef struct scsires_extent_elem scsires_extent_elem_t;
12 struct scsires_extent {
13     u_int8_t num_elements;
14     scsires_extent_elem_t *elements;
15 };
16 typedef struct scsires_extent scsires_extent_t;
17 unsigned char buf[512];
scsires_issue_reservation(scsires_extent_t * new_extent)18 void scsires_issue_reservation(scsires_extent_t * new_extent)
19 {
20   int i;
21   for (i = 0; i < new_extent->num_elements; i++)
22     {
23       buf[(i * 8)] = new_extent->elements[i].mode;
24       buf[(i * 8) + 1] = ((new_extent->elements[i].length >> 16) & 0xff);
25       buf[(i * 8) + 2] = ((new_extent->elements[i].length >> 8) & 0xff);
26       buf[(i * 8) + 3] = (new_extent->elements[i].length & 0xff);
27       buf[(i * 8) + 4] = ((new_extent->elements[i].first_block >> 24) & 0xff);
28       buf[(i * 8) + 5] = ((new_extent->elements[i].first_block >> 16) & 0xff);
29       buf[(i * 8) + 6] = ((new_extent->elements[i].first_block >> 8) & 0xff);
30       buf[(i * 8) + 7] = (new_extent->elements[i].first_block & 0xff);
31     }
32 }
33