Revision 03ff3ca3 block-raw-win32.c

b/block-raw-win32.c
22 22
 * THE SOFTWARE.
23 23
 */
24 24
#include "qemu-common.h"
25
#ifndef QEMU_IMG
26 25
#include "qemu-timer.h"
27
#include "exec-all.h"
28
#endif
29 26
#include "block_int.h"
30 27
#include <assert.h>
31 28
#include <winioctl.h>
32 29

  
30
//#define WIN32_AIO
31

  
33 32
#define FTYPE_FILE 0
34 33
#define FTYPE_CD     1
35 34
#define FTYPE_HARDDISK 2
......
100 99
    } else {
101 100
        create_flags = OPEN_EXISTING;
102 101
    }
103
#ifdef QEMU_IMG
104
    overlapped = FILE_ATTRIBUTE_NORMAL;
105
#else
102
#ifdef WIN32_AIO
106 103
    overlapped = FILE_FLAG_OVERLAPPED;
104
#else
105
    overlapped = FILE_ATTRIBUTE_NORMAL;
107 106
#endif
108 107
    if (flags & BDRV_O_DIRECT)
109 108
        overlapped |= FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH;
......
133 132
    ov.OffsetHigh = offset >> 32;
134 133
    ret = ReadFile(s->hfile, buf, count, &ret_count, &ov);
135 134
    if (!ret) {
135
#ifdef WIN32_AIO
136 136
        ret = GetOverlappedResult(s->hfile, &ov, &ret_count, TRUE);
137 137
        if (!ret)
138 138
            return -EIO;
139 139
        else
140
#endif
140 141
            return ret_count;
141 142
    }
142 143
    return ret_count;
......
155 156
    ov.OffsetHigh = offset >> 32;
156 157
    ret = WriteFile(s->hfile, buf, count, &ret_count, &ov);
157 158
    if (!ret) {
159
#ifdef WIN32_AIO
158 160
        ret = GetOverlappedResult(s->hfile, &ov, &ret_count, TRUE);
159 161
        if (!ret)
160 162
            return -EIO;
161 163
        else
164
#endif
162 165
            return ret_count;
163 166
    }
164 167
    return ret_count;
165 168
}
166 169

  
167
#if 0
168
#ifndef QEMU_IMG
170
#ifdef WIN32_AIO
169 171
static void raw_aio_cb(void *opaque)
170 172
{
171 173
    RawAIOCB *acb = opaque;
......
181 183
        acb->common.cb(acb->common.opaque, 0);
182 184
    }
183 185
}
184
#endif
185 186

  
186 187
static RawAIOCB *raw_aio_setup(BlockDriverState *bs,
187 188
        int64_t sector_num, uint8_t *buf, int nb_sectors,
......
204 205
    acb->ov.OffsetHigh = offset >> 32;
205 206
    acb->ov.hEvent = acb->hEvent;
206 207
    acb->count = nb_sectors * 512;
207
#ifndef QEMU_IMG
208 208
    qemu_add_wait_object(acb->ov.hEvent, raw_aio_cb, acb);
209
#endif
210 209
    return acb;
211 210
}
212 211

  
......
226 225
        qemu_aio_release(acb);
227 226
        return NULL;
228 227
    }
229
#ifdef QEMU_IMG
230 228
    qemu_aio_release(acb);
231
#endif
232 229
    return (BlockDriverAIOCB *)acb;
233 230
}
234 231

  
......
248 245
        qemu_aio_release(acb);
249 246
        return NULL;
250 247
    }
251
#ifdef QEMU_IMG
252 248
    qemu_aio_release(acb);
253
#endif
254 249
    return (BlockDriverAIOCB *)acb;
255 250
}
256 251

  
257 252
static void raw_aio_cancel(BlockDriverAIOCB *blockacb)
258 253
{
259
#ifndef QEMU_IMG
260 254
    RawAIOCB *acb = (RawAIOCB *)blockacb;
261 255
    BlockDriverState *bs = acb->common.bs;
262 256
    BDRVRawState *s = bs->opaque;
......
265 259
    /* XXX: if more than one async I/O it is not correct */
266 260
    CancelIo(s->hfile);
267 261
    qemu_aio_release(acb);
268
#endif
269 262
}
270
#endif /* #if 0 */
263
#endif /* #if WIN32_AIO */
271 264

  
272 265
static void raw_flush(BlockDriverState *bs)
273 266
{
......
356 349

  
357 350
void qemu_aio_wait(void)
358 351
{
359
#ifndef QEMU_IMG
360 352
    qemu_bh_poll();
361
#endif
362 353
}
363 354

  
364 355
BlockDriver bdrv_raw = {
......
372 363
    raw_create,
373 364
    raw_flush,
374 365

  
375
#if 0
366
#ifdef WIN32_AIO
376 367
    .bdrv_aio_read = raw_aio_read,
377 368
    .bdrv_aio_write = raw_aio_write,
378 369
    .bdrv_aio_cancel = raw_aio_cancel,
......
458 449
    }
459 450
    create_flags = OPEN_EXISTING;
460 451

  
461
#ifdef QEMU_IMG
462
    overlapped = FILE_ATTRIBUTE_NORMAL;
463
#else
452
#ifdef WIN32_AIO
464 453
    overlapped = FILE_FLAG_OVERLAPPED;
454
#else
455
    overlapped = FILE_ATTRIBUTE_NORMAL;
465 456
#endif
466 457
    if (flags & BDRV_O_DIRECT)
467 458
        overlapped |= FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH;
......
524 515
    NULL,
525 516
    raw_flush,
526 517

  
527
#if 0
518
#ifdef WIN32_AIO
528 519
    .bdrv_aio_read = raw_aio_read,
529 520
    .bdrv_aio_write = raw_aio_write,
530 521
    .bdrv_aio_cancel = raw_aio_cancel,

Also available in: Unified diff