Commit 979b67ad863aaa11172f5de781f53c77a392d64c
1 parent
83f64091
some compilation fixes
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2076 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
16 additions
and
10 deletions
block-raw.c
| ... | ... | @@ -207,10 +207,11 @@ typedef struct RawAIOCB { |
| 207 | 207 | |
| 208 | 208 | static int aio_sig_num = SIGUSR2; |
| 209 | 209 | static BlockDriverAIOCB *first_aio; /* AIO issued */ |
| 210 | +static int aio_initialized = 0; | |
| 210 | 211 | |
| 211 | -#ifndef QEMU_TOOL | |
| 212 | 212 | static void aio_signal_handler(int signum) |
| 213 | 213 | { |
| 214 | +#ifndef QEMU_TOOL | |
| 214 | 215 | CPUState *env = cpu_single_env; |
| 215 | 216 | if (env) { |
| 216 | 217 | /* stop the currently executing cpu because a timer occured */ |
| ... | ... | @@ -221,11 +222,14 @@ static void aio_signal_handler(int signum) |
| 221 | 222 | } |
| 222 | 223 | #endif |
| 223 | 224 | } |
| 225 | +#endif | |
| 224 | 226 | } |
| 225 | 227 | |
| 226 | 228 | void qemu_aio_init(void) |
| 227 | 229 | { |
| 228 | 230 | struct sigaction act; |
| 231 | + | |
| 232 | + aio_initialized = 1; | |
| 229 | 233 | |
| 230 | 234 | sigfillset(&act.sa_mask); |
| 231 | 235 | act.sa_flags = 0; /* do not restart syscalls to interrupt select() */ |
| ... | ... | @@ -242,7 +246,6 @@ void qemu_aio_init(void) |
| 242 | 246 | aio_init(&ai); |
| 243 | 247 | } |
| 244 | 248 | } |
| 245 | -#endif /* !QEMU_TOOL */ | |
| 246 | 249 | |
| 247 | 250 | void qemu_aio_poll(void) |
| 248 | 251 | { |
| ... | ... | @@ -293,6 +296,9 @@ static sigset_t wait_oset; |
| 293 | 296 | void qemu_aio_wait_start(void) |
| 294 | 297 | { |
| 295 | 298 | sigset_t set; |
| 299 | + | |
| 300 | + if (!aio_initialized) | |
| 301 | + qemu_aio_init(); | |
| 296 | 302 | sigemptyset(&set); |
| 297 | 303 | sigaddset(&set, aio_sig_num); |
| 298 | 304 | sigprocmask(SIG_BLOCK, &set, &wait_oset); |
| ... | ... | @@ -570,7 +576,7 @@ static int raw_open(BlockDriverState *bs, const char *filename, int flags) |
| 570 | 576 | } else { |
| 571 | 577 | access_flags = GENERIC_READ; |
| 572 | 578 | } |
| 573 | - if (flags & BDRV_O_CREATE) { | |
| 579 | + if (flags & BDRV_O_CREAT) { | |
| 574 | 580 | create_flags = CREATE_ALWAYS; |
| 575 | 581 | } else { |
| 576 | 582 | create_flags = OPEN_EXISTING; |
| ... | ... | @@ -632,15 +638,17 @@ static int raw_aio_new(BlockDriverAIOCB *acb) |
| 632 | 638 | if (!acb1) |
| 633 | 639 | return -ENOMEM; |
| 634 | 640 | acb->opaque = acb1; |
| 635 | - s->hevent = CreateEvent(NULL, TRUE, FALSE, NULL); | |
| 636 | - if (!s->hevent) | |
| 641 | + s->hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); | |
| 642 | + if (!s->hEvent) | |
| 637 | 643 | return -ENOMEM; |
| 638 | 644 | return 0; |
| 639 | 645 | } |
| 640 | 646 | |
| 641 | 647 | static void raw_aio_cb(void *opaque) |
| 642 | 648 | { |
| 643 | - BlockDriverAIOCB *acb = acb1; | |
| 649 | + BlockDriverAIOCB *acb = opaque; | |
| 650 | + BlockDriverState *bs = acb->bs; | |
| 651 | + BDRVRawState *s = bs->opaque; | |
| 644 | 652 | RawAIOCB *acb1 = acb->opaque; |
| 645 | 653 | DWORD ret_count; |
| 646 | 654 | int ret; |
| ... | ... | @@ -659,7 +667,6 @@ static int raw_aio_read(BlockDriverAIOCB *acb, int64_t sector_num, |
| 659 | 667 | BlockDriverState *bs = acb->bs; |
| 660 | 668 | BDRVRawState *s = bs->opaque; |
| 661 | 669 | RawAIOCB *acb1 = acb->opaque; |
| 662 | - DWORD ret_count; | |
| 663 | 670 | int ret; |
| 664 | 671 | int64_t offset; |
| 665 | 672 | |
| ... | ... | @@ -682,7 +689,6 @@ static int raw_aio_write(BlockDriverAIOCB *acb, int64_t sector_num, |
| 682 | 689 | BlockDriverState *bs = acb->bs; |
| 683 | 690 | BDRVRawState *s = bs->opaque; |
| 684 | 691 | RawAIOCB *acb1 = acb->opaque; |
| 685 | - DWORD ret_count; | |
| 686 | 692 | int ret; |
| 687 | 693 | int64_t offset; |
| 688 | 694 | |
| ... | ... | @@ -734,8 +740,8 @@ static int raw_truncate(BlockDriverState *bs, int64_t offset) |
| 734 | 740 | BDRVRawState *s = bs->opaque; |
| 735 | 741 | DWORD low, high; |
| 736 | 742 | |
| 737 | - low = length; | |
| 738 | - high = length >> 32; | |
| 743 | + low = offset; | |
| 744 | + high = offset >> 32; | |
| 739 | 745 | if (!SetFilePointer(s->hfile, low, &high, FILE_BEGIN)) |
| 740 | 746 | return -EIO; |
| 741 | 747 | if (!SetEndOfFile(s->hfile)) | ... | ... |