From 4de237a42e0b79c87aeaf37792be6458b5437f7b Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Mon, 17 Sep 2012 11:17:00 +0100 Subject: libxl: Enable -Wshadow. It was convenient to invent $(CFLAGS_LIBXL) to do this. Various renamings to avoid shadowing standard functions: - index(3) - listen(2) - link(2) - abort(3) - abs(3) Reduced the scope of some variables to avoid conflicts. Change to libxc is due to the nested hypercall buf macros in set_xen_guest_handle (used in libxl) using the same local private vars. Build tested only. Signed-off-by: Ian Campbell Acked-by: Ian Jackson Committed-by: Ian Campbell --- tools/libxc/xenctrl.h | 36 ++++++++++++++++++++---------------- tools/libxl/Makefile | 8 +++++++- tools/libxl/flexarray.c | 18 +++++++++--------- tools/libxl/libxl.c | 37 +++++++++++++++++++------------------ tools/libxl/libxl_dm.c | 12 ++++++------ tools/libxl/libxl_event.c | 34 +++++++++++++++++----------------- tools/libxl/libxl_exec.c | 8 ++++---- tools/libxl/libxl_json.c | 16 ++++++++-------- tools/libxl/libxl_pci.c | 2 +- tools/libxl/libxl_qmp.c | 8 ++++---- 10 files changed, 95 insertions(+), 84 deletions(-) (limited to 'tools') diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h index 3254537dce..7eb57430c3 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -235,11 +235,13 @@ typedef struct xc_hypercall_buffer xc_hypercall_buffer_t; /* * Returns the hypercall_buffer associated with a variable. */ -#define HYPERCALL_BUFFER(_name) \ - ({ xc_hypercall_buffer_t _val1; \ - typeof(XC__HYPERCALL_BUFFER_NAME(_name)) *_val2 = &XC__HYPERCALL_BUFFER_NAME(_name); \ - (void)(&_val1 == _val2); \ - (_val2)->param_shadow ? (_val2)->param_shadow : (_val2); \ +#define HYPERCALL_BUFFER(_name) \ + ({ xc_hypercall_buffer_t _hcbuf_buf1; \ + typeof(XC__HYPERCALL_BUFFER_NAME(_name)) *_hcbuf_buf2 = \ + &XC__HYPERCALL_BUFFER_NAME(_name); \ + (void)(&_hcbuf_buf1 == _hcbuf_buf2); \ + (_hcbuf_buf2)->param_shadow ? \ + (_hcbuf_buf2)->param_shadow : (_hcbuf_buf2); \ }) #define HYPERCALL_BUFFER_INIT_NO_BOUNCE .dir = 0, .sz = 0, .ubuf = (void *)-1 @@ -273,11 +275,12 @@ typedef struct xc_hypercall_buffer xc_hypercall_buffer_t; * Get the hypercall buffer data pointer in a form suitable for use * directly as a hypercall argument. */ -#define HYPERCALL_BUFFER_AS_ARG(_name) \ - ({ xc_hypercall_buffer_t _val1; \ - typeof(XC__HYPERCALL_BUFFER_NAME(_name)) *_val2 = HYPERCALL_BUFFER(_name); \ - (void)(&_val1 == _val2); \ - (unsigned long)(_val2)->hbuf; \ +#define HYPERCALL_BUFFER_AS_ARG(_name) \ + ({ xc_hypercall_buffer_t _hcbuf_arg1; \ + typeof(XC__HYPERCALL_BUFFER_NAME(_name)) *_hcbuf_arg2 = \ + HYPERCALL_BUFFER(_name); \ + (void)(&_hcbuf_arg1 == _hcbuf_arg2); \ + (unsigned long)(_hcbuf_arg2)->hbuf; \ }) /* @@ -285,12 +288,13 @@ typedef struct xc_hypercall_buffer xc_hypercall_buffer_t; * data pointer has been correctly allocated. */ #undef set_xen_guest_handle -#define set_xen_guest_handle(_hnd, _val) \ - do { \ - xc_hypercall_buffer_t _val1; \ - typeof(XC__HYPERCALL_BUFFER_NAME(_val)) *_val2 = HYPERCALL_BUFFER(_val); \ - (void) (&_val1 == _val2); \ - set_xen_guest_handle_raw(_hnd, (_val2)->hbuf); \ +#define set_xen_guest_handle(_hnd, _val) \ + do { \ + xc_hypercall_buffer_t _hcbuf_hnd1; \ + typeof(XC__HYPERCALL_BUFFER_NAME(_val)) *_hcbuf_hnd2 = \ + HYPERCALL_BUFFER(_val); \ + (void) (&_hcbuf_hnd1 == _hcbuf_hnd2); \ + set_xen_guest_handle_raw(_hnd, (_hcbuf_hnd2)->hbuf); \ } while (0) /* Use with set_xen_guest_handle in place of NULL */ diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile index 09869014d7..c7ad984866 100644 --- a/tools/libxl/Makefile +++ b/tools/libxl/Makefile @@ -22,6 +22,12 @@ endif LIBXL_LIBS = LIBXL_LIBS = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) $(LDLIBS_libxenstore) $(LDLIBS_libblktapctl) $(PTYFUNCS_LIBS) $(LIBUUID_LIBS) +CFLAGS_LIBXL += $(CFLAGS_libxenctrl) +CFLAGS_LIBXL += $(CFLAGS_libxenguest) +CFLAGS_LIBXL += $(CFLAGS_libxenstore) +CFLAGS_LIBXL += $(CFLAGS_libblktapctl) +CFLAGS_LIBXL += -Wshadow + CFLAGS += $(PTHREAD_CFLAGS) LDFLAGS += $(PTHREAD_LDFLAGS) LIBXL_LIBS += $(PTHREAD_LIBS) @@ -71,7 +77,7 @@ LIBXL_OBJS = flexarray.o libxl.o libxl_create.o libxl_dm.o libxl_pci.o \ libxl_qmp.o libxl_event.o libxl_fork.o $(LIBXL_OBJS-y) LIBXL_OBJS += _libxl_types.o libxl_flask.o _libxl_types_internal.o -$(LIBXL_OBJS): CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) $(CFLAGS_libxenstore) $(CFLAGS_libblktapctl) -include $(XEN_ROOT)/tools/config.h +$(LIBXL_OBJS): CFLAGS += $(CFLAGS_LIBXL) -include $(XEN_ROOT)/tools/config.h AUTOINCS= libxlu_cfg_y.h libxlu_cfg_l.h _libxl_list.h _paths.h \ _libxl_save_msgs_callout.h _libxl_save_msgs_helper.h diff --git a/tools/libxl/flexarray.c b/tools/libxl/flexarray.c index 64d5b020e9..edf616ca9a 100644 --- a/tools/libxl/flexarray.c +++ b/tools/libxl/flexarray.c @@ -48,19 +48,19 @@ int flexarray_grow(flexarray_t *array, int extents) return 0; } -int flexarray_set(flexarray_t *array, unsigned int index, void *ptr) +int flexarray_set(flexarray_t *array, unsigned int idx, void *ptr) { - if (index >= array->size) { + if (idx >= array->size) { int newsize; if (!array->autogrow) return 1; - newsize = (array->size * 2 < index) ? index + 1 : array->size * 2; + newsize = (array->size * 2 < idx) ? idx + 1 : array->size * 2; if (flexarray_grow(array, newsize - array->size)) return 2; } - if ( index + 1 > array->count ) - array->count = index + 1; - array->data[index] = ptr; + if ( idx + 1 > array->count ) + array->count = idx + 1; + array->data[idx] = ptr; return 0; } @@ -92,11 +92,11 @@ int flexarray_vappend(flexarray_t *array, ...) return ret; } -int flexarray_get(flexarray_t *array, int index, void **ptr) +int flexarray_get(flexarray_t *array, int idx, void **ptr) { - if (index >= array->size) + if (idx >= array->size) return 1; - *ptr = array->data[index]; + *ptr = array->data[idx]; return 0; } diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index bc2f1eadf5..1606eb16a1 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -665,7 +665,7 @@ out: libxl_vminfo * libxl_list_vm(libxl_ctx *ctx, int *nb_vm_out) { libxl_vminfo *ptr; - int index, i, ret; + int idx, i, ret; xc_domaininfo_t info[1024]; int size = 1024; @@ -678,15 +678,15 @@ libxl_vminfo * libxl_list_vm(libxl_ctx *ctx, int *nb_vm_out) LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "geting domain info list"); return NULL; } - for (index = i = 0; i < ret; i++) { + for (idx = i = 0; i < ret; i++) { if (libxl_is_stubdom(ctx, info[i].domain, NULL)) continue; - memcpy(&(ptr[index].uuid), info[i].handle, sizeof(xen_domain_handle_t)); - ptr[index].domid = info[i].domain; + memcpy(&(ptr[idx].uuid), info[i].handle, sizeof(xen_domain_handle_t)); + ptr[idx].domid = info[i].domain; - index++; + idx++; } - *nb_vm_out = index; + *nb_vm_out = idx; return ptr; } @@ -3354,7 +3354,7 @@ int libxl_set_memory_target(libxl_ctx *ctx, uint32_t domid, int32_t target_memkb, int relative, int enforce) { GC_INIT(ctx); - int rc = 1, abort = 0; + int rc = 1, abort_transaction = 0; uint32_t memorykb = 0, videoram = 0; uint32_t current_target_memkb = 0, new_target_memkb = 0; char *memmax, *endptr, *videoram_s = NULL, *target = NULL; @@ -3373,7 +3373,7 @@ retry_transaction: xs_transaction_end(ctx->xsh, t, 1); rc = libxl__fill_dom0_memory_info(gc, ¤t_target_memkb); if (rc < 0) { - abort = 1; + abort_transaction = 1; goto out; } goto retry_transaction; @@ -3381,7 +3381,7 @@ retry_transaction: LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "cannot get target memory info from %s/memory/target\n", dompath); - abort = 1; + abort_transaction = 1; goto out; } else { current_target_memkb = strtoul(target, &endptr, 10); @@ -3389,7 +3389,7 @@ retry_transaction: LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "invalid memory target %s from %s/memory/target\n", target, dompath); - abort = 1; + abort_transaction = 1; goto out; } } @@ -3399,7 +3399,7 @@ retry_transaction: LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "cannot get memory info from %s/memory/static-max\n", dompath); - abort = 1; + abort_transaction = 1; goto out; } memorykb = strtoul(memmax, &endptr, 10); @@ -3407,7 +3407,7 @@ retry_transaction: LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "invalid max memory %s from %s/memory/static-max\n", memmax, dompath); - abort = 1; + abort_transaction = 1; goto out; } @@ -3422,7 +3422,7 @@ retry_transaction: LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "memory_dynamic_max must be less than or equal to" " memory_static_max\n"); - abort = 1; + abort_transaction = 1; goto out; } @@ -3430,7 +3430,7 @@ retry_transaction: LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "new target %d for dom0 is below the minimum threshold\n", new_target_memkb); - abort = 1; + abort_transaction = 1; goto out; } videoram_s = libxl__xs_read(gc, t, libxl__sprintf(gc, @@ -3445,7 +3445,7 @@ retry_transaction: LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "xc_domain_setmaxmem domid=%d memkb=%d failed " "rc=%d\n", domid, memorykb + LIBXL_MAXMEM_CONSTANT, rc); - abort = 1; + abort_transaction = 1; goto out; } } @@ -3458,7 +3458,7 @@ retry_transaction: "xc_domain_set_pod_target domid=%d, memkb=%d " "failed rc=%d\n", domid, new_target_memkb / 4, rc); - abort = 1; + abort_transaction = 1; goto out; } @@ -3466,7 +3466,7 @@ retry_transaction: dompath), "%"PRIu32, new_target_memkb); rc = xc_domain_getinfolist(ctx->xch, domid, 1, &info); if (rc != 1 || info.domain != domid) { - abort = 1; + abort_transaction = 1; goto out; } xcinfo2xlinfo(&info, &ptr); @@ -3475,7 +3475,8 @@ retry_transaction: "%"PRIu32, new_target_memkb / 1024); out: - if (!xs_transaction_end(ctx->xsh, t, abort) && !abort) + if (!xs_transaction_end(ctx->xsh, t, abort_transaction) + && !abort_transaction) if (errno == EAGAIN) goto retry_transaction; diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index 0c0084f5bb..4064d5d716 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -366,7 +366,7 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc, } if (vnc) { int display = 0; - const char *listen = "127.0.0.1"; + const char *addr = "127.0.0.1"; char *vncarg = NULL; flexarray_append(dm_args, "-vnc"); @@ -374,16 +374,16 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc, if (vnc->display) { display = vnc->display; if (vnc->listen && strchr(vnc->listen, ':') == NULL) { - listen = vnc->listen; + addr = vnc->listen; } } else if (vnc->listen) { - listen = vnc->listen; + addr = vnc->listen; } - if (strchr(listen, ':') != NULL) - vncarg = libxl__sprintf(gc, "%s", listen); + if (strchr(addr, ':') != NULL) + vncarg = libxl__sprintf(gc, "%s", addr); else - vncarg = libxl__sprintf(gc, "%s:%d", listen, display); + vncarg = libxl__sprintf(gc, "%s:%d", addr, display); if (vnc->passwd && vnc->passwd[0]) { vncarg = libxl__sprintf(gc, "%s,password", vncarg); } diff --git a/tools/libxl/libxl_event.c b/tools/libxl/libxl_event.c index 939906c03c..aea58bbb6e 100644 --- a/tools/libxl/libxl_event.c +++ b/tools/libxl/libxl_event.c @@ -167,15 +167,15 @@ static void time_insert_finite(libxl__gc *gc, libxl__ev_time *ev) } static int time_register_finite(libxl__gc *gc, libxl__ev_time *ev, - struct timeval abs) + struct timeval absolute) { int rc; - rc = OSEVENT_HOOK(timeout_register, &ev->for_app_reg, abs, ev); + rc = OSEVENT_HOOK(timeout_register, &ev->for_app_reg, absolute, ev); if (rc) return rc; ev->infinite = 0; - ev->abs = abs; + ev->abs = absolute; time_insert_finite(gc, ev); return 0; @@ -202,16 +202,16 @@ static void time_done_debug(libxl__gc *gc, const char *func, int libxl__ev_time_register_abs(libxl__gc *gc, libxl__ev_time *ev, libxl__ev_time_callback *func, - struct timeval abs) + struct timeval absolute) { int rc; CTX_LOCK; DBG("ev_time=%p register abs=%lu.%06lu", - ev, (unsigned long)abs.tv_sec, (unsigned long)abs.tv_usec); + ev, (unsigned long)absolute.tv_sec, (unsigned long)absolute.tv_usec); - rc = time_register_finite(gc, ev, abs); + rc = time_register_finite(gc, ev, absolute); if (rc) goto out; ev->func = func; @@ -228,7 +228,7 @@ int libxl__ev_time_register_rel(libxl__gc *gc, libxl__ev_time *ev, libxl__ev_time_callback *func, int milliseconds /* as for poll(2) */) { - struct timeval abs; + struct timeval absolute; int rc; CTX_LOCK; @@ -238,10 +238,10 @@ int libxl__ev_time_register_rel(libxl__gc *gc, libxl__ev_time *ev, if (milliseconds < 0) { ev->infinite = 1; } else { - rc = time_rel_to_abs(gc, milliseconds, &abs); + rc = time_rel_to_abs(gc, milliseconds, &absolute); if (rc) goto out; - rc = time_register_finite(gc, ev, abs); + rc = time_register_finite(gc, ev, absolute); if (rc) goto out; } @@ -255,26 +255,26 @@ int libxl__ev_time_register_rel(libxl__gc *gc, libxl__ev_time *ev, } int libxl__ev_time_modify_abs(libxl__gc *gc, libxl__ev_time *ev, - struct timeval abs) + struct timeval absolute) { int rc; CTX_LOCK; DBG("ev_time=%p modify abs==%lu.%06lu", - ev, (unsigned long)abs.tv_sec, (unsigned long)abs.tv_usec); + ev, (unsigned long)absolute.tv_sec, (unsigned long)absolute.tv_usec); assert(libxl__ev_time_isregistered(ev)); if (ev->infinite) { - rc = time_register_finite(gc, ev, abs); + rc = time_register_finite(gc, ev, absolute); if (rc) goto out; } else { - rc = OSEVENT_HOOK(timeout_modify, &ev->for_app_reg, abs); + rc = OSEVENT_HOOK(timeout_modify, &ev->for_app_reg, absolute); if (rc) goto out; LIBXL_TAILQ_REMOVE(&CTX->etimes, ev, entry); - ev->abs = abs; + ev->abs = absolute; time_insert_finite(gc, ev); } @@ -288,7 +288,7 @@ int libxl__ev_time_modify_abs(libxl__gc *gc, libxl__ev_time *ev, int libxl__ev_time_modify_rel(libxl__gc *gc, libxl__ev_time *ev, int milliseconds) { - struct timeval abs; + struct timeval absolute; int rc; CTX_LOCK; @@ -304,10 +304,10 @@ int libxl__ev_time_modify_rel(libxl__gc *gc, libxl__ev_time *ev, goto out; } - rc = time_rel_to_abs(gc, milliseconds, &abs); + rc = time_rel_to_abs(gc, milliseconds, &absolute); if (rc) goto out; - rc = libxl__ev_time_modify_abs(gc, ev, abs); + rc = libxl__ev_time_modify_abs(gc, ev, absolute); if (rc) goto out; rc = 0; diff --git a/tools/libxl/libxl_exec.c b/tools/libxl/libxl_exec.c index 04773866e4..98bfd716ac 100644 --- a/tools/libxl/libxl_exec.c +++ b/tools/libxl/libxl_exec.c @@ -35,7 +35,7 @@ static void check_open_fds(const char *what) #ifdef __linux__ size_t len; char path[PATH_MAX]; - char link[PATH_MAX+1]; + char linkpath[PATH_MAX+1]; #endif flags = fcntl(i, F_GETFD); if ( flags == -1 ) { @@ -52,11 +52,11 @@ static void check_open_fds(const char *what) #ifdef __linux__ snprintf(path, PATH_MAX, "/proc/%d/fd/%d", getpid(), i); - len = readlink(path, link, PATH_MAX); + len = readlink(path, linkpath, PATH_MAX); if (len > 0) { - link[len] = '\0'; + linkpath[len] = '\0'; fprintf(stderr, "libxl: execing %s: fd %d is open to %s with flags %#x\n", - what, i, link, flags); + what, i, linkpath, flags); } else #endif fprintf(stderr, "libxl: execing %s: fd %d is open with flags %#x\n", diff --git a/tools/libxl/libxl_json.c b/tools/libxl/libxl_json.c index caa831234e..8e17842e41 100644 --- a/tools/libxl/libxl_json.c +++ b/tools/libxl/libxl_json.c @@ -275,7 +275,7 @@ static int json_object_append_to(libxl__gc *gc, void libxl__json_object_free(libxl__gc *gc, libxl__json_object *obj) { - int index = 0; + int idx = 0; if (obj == NULL) return; @@ -287,8 +287,8 @@ void libxl__json_object_free(libxl__gc *gc, libxl__json_object *obj) case JSON_MAP: { libxl__json_map_node *node = NULL; - for (index = 0; index < obj->u.map->count; index++) { - if (flexarray_get(obj->u.map, index, (void**)&node) != 0) + for (idx = 0; idx < obj->u.map->count; idx++) { + if (flexarray_get(obj->u.map, idx, (void**)&node) != 0) break; libxl__json_object_free(gc, node->obj); free(node->map_key); @@ -302,8 +302,8 @@ void libxl__json_object_free(libxl__gc *gc, libxl__json_object *obj) libxl__json_object *node = NULL; break; - for (index = 0; index < obj->u.array->count; index++) { - if (flexarray_get(obj->u.array, index, (void**)&node) != 0) + for (idx = 0; idx < obj->u.array->count; idx++) { + if (flexarray_get(obj->u.array, idx, (void**)&node) != 0) break; libxl__json_object_free(gc, node); node = NULL; @@ -359,14 +359,14 @@ const libxl__json_object *libxl__json_map_get(const char *key, libxl__json_node_type expected_type) { flexarray_t *maps = NULL; - int index = 0; + int idx = 0; if (libxl__json_object_is_map(o)) { libxl__json_map_node *node = NULL; maps = o->u.map; - for (index = 0; index < maps->count; index++) { - if (flexarray_get(maps, index, (void**)&node) != 0) + for (idx = 0; idx < maps->count; idx++) { + if (flexarray_get(maps, idx, (void**)&node) != 0) return NULL; if (strcmp(key, node->map_key) == 0) { if (expected_type == JSON_ANY diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c index 48986f3fa8..ff447e7102 100644 --- a/tools/libxl/libxl_pci.c +++ b/tools/libxl/libxl_pci.c @@ -167,7 +167,6 @@ static int libxl__device_pci_remove_xenstore(libxl__gc *gc, uint32_t domid, libx char *be_path, *num_devs_path, *num_devs, *xsdev, *tmp, *tmppath; int num, i, j; xs_transaction_t t; - unsigned int domain = 0, bus = 0, dev = 0, func = 0; be_path = libxl__sprintf(gc, "%s/backend/pci/%d/0", libxl__xs_get_dompath(gc, 0), domid); num_devs_path = libxl__sprintf(gc, "%s/num_devs", be_path); @@ -188,6 +187,7 @@ static int libxl__device_pci_remove_xenstore(libxl__gc *gc, uint32_t domid, libx } for (i = 0; i < num; i++) { + unsigned int domain = 0, bus = 0, dev = 0, func = 0; xsdev = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/dev-%d", be_path, i)); sscanf(xsdev, PCI_BDF, &domain, &bus, &dev, &func); if (domain == pcidev->domain && bus == pcidev->bus && diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c index e33b130f00..0c95e6000b 100644 --- a/tools/libxl/libxl_qmp.c +++ b/tools/libxl/libxl_qmp.c @@ -171,7 +171,7 @@ static int qmp_register_vnc_callback(libxl__qmp_handler *qmp, { GC_INIT(qmp->ctx); const libxl__json_object *obj; - const char *listen, *port; + const char *addr, *port; int rc = -1; if (!libxl__json_object_is_map(o)) { @@ -184,17 +184,17 @@ static int qmp_register_vnc_callback(libxl__qmp_handler *qmp, } obj = libxl__json_map_get("host", o, JSON_STRING); - listen = libxl__json_object_get_string(obj); + addr = libxl__json_object_get_string(obj); obj = libxl__json_map_get("service", o, JSON_STRING); port = libxl__json_object_get_string(obj); - if (!listen || !port) { + if (!addr || !port) { LIBXL__LOG(qmp->ctx, LIBXL__LOG_ERROR, "Failed to retreive VNC connect information."); goto out; } - rc = qmp_write_domain_console_item(gc, qmp->domid, "vnc-listen", listen); + rc = qmp_write_domain_console_item(gc, qmp->domid, "vnc-listen", addr); if (!rc) rc = qmp_write_domain_console_item(gc, qmp->domid, "vnc-port", port); -- cgit v1.2.3