~jderose/ubuntu/raring/qemu/vde-again

« back to all changes in this revision

Viewing changes to hw/device-hotplug.c

  • Committer: Bazaar Package Importer
  • Author(s): Aurelien Jarno, Aurelien Jarno
  • Date: 2009-03-07 06:20:34 UTC
  • mfrom: (1.1.9 upstream)
  • mto: This revision was merged to the branch mainline in revision 7.
  • Revision ID: james.westby@ubuntu.com-20090307062034-i3pead4mw653v2el
Tags: 0.10.0-1
[ Aurelien Jarno ]
* New upstream release:
  - Fix fr-be keyboard mapping (closes: bug#514462).
  - Fix stat64 structure on ppc-linux-user (closes: bug#470231).
  - Add a chroot option (closes: bug#415996).
  - Add evdev support (closes: bug#513210).
  - Fix loop on symlinks in user mode (closes: bug#297572).
  - Bump depends on openbios-sparc.
  - Depends on openbios-ppc.
  - Update 12_signal_powerpc_support.patch.
  - Update 21_net_soopts.patch.
  - Drop 44_socklen_t_check.patch (merged upstream).
  - Drop 49_null_check.patch (merged upstream).
  - Update 64_ppc_asm_constraints.patch.
  - Drop security/CVE-2008-0928-fedora.patch (merged upstream).
  - Drop security/CVE-2007-5730.patch (merged upstream).
* patches/80_stable-branch.patch: add patches from stable branch:
  - Fix race condition between signal handler/execution loop (closes:
    bug#474386, bug#501731).
* debian/copyright: update.
* Compile and install .dtb files:
  - debian/control: build-depends on device-tree-compiler.
  - debian/patches/81_compile_dtb.patch: new patch from upstream.
  - debian/rules: compile and install bamboo.dtb and mpc8544.dtb.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * QEMU device hotplug helpers
 
3
 *
 
4
 * Copyright (c) 2004 Fabrice Bellard
 
5
 *
 
6
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 
7
 * of this software and associated documentation files (the "Software"), to deal
 
8
 * in the Software without restriction, including without limitation the rights
 
9
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 
10
 * copies of the Software, and to permit persons to whom the Software is
 
11
 * furnished to do so, subject to the following conditions:
 
12
 *
 
13
 * The above copyright notice and this permission notice shall be included in
 
14
 * all copies or substantial portions of the Software.
 
15
 *
 
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
17
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 
19
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 
21
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 
22
 * THE SOFTWARE.
 
23
 */
 
24
 
 
25
#include "hw.h"
 
26
#include "boards.h"
 
27
#include "net.h"
 
28
#include "block_int.h"
 
29
#include "sysemu.h"
 
30
 
 
31
int add_init_drive(const char *opts)
 
32
{
 
33
    int drive_opt_idx, drive_idx;
 
34
    int ret = -1;
 
35
 
 
36
    drive_opt_idx = drive_add(NULL, "%s", opts);
 
37
    if (!drive_opt_idx)
 
38
        return ret;
 
39
 
 
40
    drive_idx = drive_init(&drives_opt[drive_opt_idx], 0, current_machine);
 
41
    if (drive_idx == -1) {
 
42
        drive_remove(drive_opt_idx);
 
43
        return ret;
 
44
    }
 
45
 
 
46
    return drive_idx;
 
47
}
 
48
 
 
49
void destroy_nic(dev_match_fn *match_fn, void *arg)
 
50
{
 
51
    int i;
 
52
    NICInfo *nic;
 
53
 
 
54
    for (i = 0; i < MAX_NICS; i++) {
 
55
        nic = &nd_table[i];
 
56
        if (nic->used) {
 
57
            if (nic->private && match_fn(nic->private, arg)) {
 
58
                if (nic->vlan) {
 
59
                    VLANClientState *vc;
 
60
                    vc = qemu_find_vlan_client(nic->vlan, nic->private);
 
61
                    if (vc)
 
62
                        qemu_del_vlan_client(vc);
 
63
                }
 
64
                net_client_uninit(nic);
 
65
            }
 
66
        }
 
67
    }
 
68
}
 
69
 
 
70
void destroy_bdrvs(dev_match_fn *match_fn, void *arg)
 
71
{
 
72
    int i;
 
73
    struct BlockDriverState *bs;
 
74
 
 
75
    for (i = 0; i <= MAX_DRIVES; i++) {
 
76
        bs = drives_table[i].bdrv;
 
77
        if (bs) {
 
78
            if (bs->private && match_fn(bs->private, arg)) {
 
79
                drive_uninit(bs);
 
80
                bdrv_delete(bs);
 
81
            }
 
82
        }
 
83
    }
 
84
}
 
85
 
 
86