X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fvirt.c;h=87ab8fdc15be06672d83320e81f77a5208fd7a7c;hb=0706e1c4c496962b92b7bd2149bb651ef05b0acf;hp=ead1389357b0748206ccb890d44c16139d02d896;hpb=8be68899787276bcd55bf984cad1bea8d49add47;p=collectd.git diff --git a/src/virt.c b/src/virt.c index ead13893..87ab8fdc 100644 --- a/src/virt.c +++ b/src/virt.c @@ -34,6 +34,7 @@ #include #include #include +#include /* Plugin name */ #define PLUGIN_NAME "virt" @@ -113,7 +114,7 @@ typedef struct virt_notif_thread_s { pthread_t event_loop_tid; int domain_event_cb_id; pthread_mutex_t active_mutex; /* protects 'is_active' member access*/ - _Bool is_active; + bool is_active; } virt_notif_thread_t; static const char *config_keys[] = {"Connection", @@ -138,7 +139,7 @@ static const char *config_keys[] = {"Connection", NULL}; /* PersistentNotification is false by default */ -static _Bool persistent_notification = 0; +static bool persistent_notification = false; /* Thread used for handling libvirt notifications events */ static virt_notif_thread_t notif_thread; @@ -467,8 +468,8 @@ const char *domain_reasons[][DOMAIN_STATE_REASON_MAX_SIZE] = { } while (0) /* Connection. */ -static virConnectPtr conn = 0; -static char *conn_string = NULL; +static virConnectPtr conn; +static char *conn_string; static c_complain_t conn_complain = C_COMPLAIN_INIT_STATIC; /* Node information required for %CPU */ @@ -478,11 +479,11 @@ static virNodeInfo nodeinfo; static int interval = 60; /* List of domains, if specified. */ -static ignorelist_t *il_domains = NULL; +static ignorelist_t *il_domains; /* List of block devices, if specified. */ -static ignorelist_t *il_block_devices = NULL; +static ignorelist_t *il_block_devices; /* List of network interface devices, if specified. */ -static ignorelist_t *il_interface_devices = NULL; +static ignorelist_t *il_interface_devices; static int ignore_device_match(ignorelist_t *, const char *domname, const char *devpath); @@ -504,7 +505,7 @@ struct interface_device { typedef struct domain_s { virDomainPtr ptr; virDomainInfo info; - _Bool active; + bool active; } domain_t; struct lv_read_state { @@ -521,7 +522,7 @@ struct lv_read_state { static void free_domains(struct lv_read_state *state); static int add_domain(struct lv_read_state *state, virDomainPtr dom, - _Bool active); + bool active); static void free_block_devices(struct lv_read_state *state); static int add_block_device(struct lv_read_state *state, virDomainPtr dom, @@ -629,7 +630,7 @@ static const struct ex_stats_item ex_stats_table[] = { }; /* BlockDeviceFormatBasename */ -_Bool blockdevice_format_basename = 0; +static bool blockdevice_format_basename; static enum bd_field blockdevice_format = target; static enum if_field interface_format = if_name; @@ -1015,7 +1016,7 @@ static unsigned int parse_ex_stats_flags(char **exstats, int numexstats) { } static void domain_state_submit_notif(virDomainPtr dom, int state, int reason) { - if ((state < 0) || (state >= STATIC_ARRAY_SIZE(domain_states))) { + if ((state < 0) || ((size_t)state >= STATIC_ARRAY_SIZE(domain_states))) { ERROR(PLUGIN_NAME ": Array index out of bounds: state=%d", state); return; } @@ -1023,7 +1024,8 @@ static void domain_state_submit_notif(virDomainPtr dom, int state, int reason) { char msg[DATA_MAX_NAME_LEN]; const char *state_str = domain_states[state]; #ifdef HAVE_DOM_REASON - if ((reason < 0) || (reason >= STATIC_ARRAY_SIZE(domain_reasons[0]))) { + if ((reason < 0) || + ((size_t)reason >= STATIC_ARRAY_SIZE(domain_reasons[0]))) { ERROR(PLUGIN_NAME ": Array index out of bounds: reason=%d", reason); return; } @@ -1122,7 +1124,7 @@ static int lv_config(const char *key, const char *value) { return 0; } if (strcasecmp(key, "BlockDeviceFormatBasename") == 0) { - blockdevice_format_basename = IS_TRUE(value); + blockdevice_format_basename = IS_TRUE(value) ? true : false; return 0; } if (strcasecmp(key, "InterfaceDevice") == 0) { @@ -1396,7 +1398,7 @@ static void vcpu_pin_submit(virDomainPtr dom, int max_cpus, int vcpu, unsigned char *cpu_maps, int cpu_map_len) { for (int cpu = 0; cpu < max_cpus; ++cpu) { char type_instance[DATA_MAX_NAME_LEN]; - _Bool is_set = VIR_CPU_USABLE(cpu_maps, cpu_map_len, vcpu, cpu) ? 1 : 0; + bool is_set = VIR_CPU_USABLE(cpu_maps, cpu_map_len, vcpu, cpu); snprintf(type_instance, sizeof(type_instance), "vcpu_%d-cpu_%d", vcpu, cpu); submit(dom, "cpu_affinity", type_instance, &(value_t){.gauge = is_set}, 1); @@ -1583,7 +1585,7 @@ static int get_block_stats(struct block_device *block_dev) { #define NM_ADD_STR_ITEMS(_items, _size) \ do { \ - for (int _i = 0; _i < _size; ++_i) { \ + for (size_t _i = 0; _i < _size; ++_i) { \ DEBUG(PLUGIN_NAME \ " plugin: Adding notification metadata name=%s value=%s", \ _items[_i].name, _items[_i].value); \ @@ -1608,7 +1610,7 @@ static int fs_info_notify(virDomainPtr domain, virDomainFSInfoPtr fs_info) { {.name = "name", .value = fs_info->name}, {.name = "fstype", .value = fs_info->fstype}}; - for (int i = 0; i < fs_info->ndevAlias; ++i) { + for (size_t i = 0; i < fs_info->ndevAlias; ++i) { fs_dev_alias[i].name = "devAlias"; fs_dev_alias[i].value = fs_info->devAlias[i]; } @@ -1823,7 +1825,7 @@ static int get_if_dev_stats(struct interface_device *if_dev) { return 0; } -static int domain_lifecycle_event_cb(__attribute__((unused)) virConnectPtr conn, +static int domain_lifecycle_event_cb(__attribute__((unused)) virConnectPtr con_, virDomainPtr dom, int event, int detail, __attribute__((unused)) void *opaque) { int domain_state = map_domain_event_to_state(event); @@ -1849,22 +1851,22 @@ static int register_event_impl(void) { } static void virt_notif_thread_set_active(virt_notif_thread_t *thread_data, - const _Bool active) { + const bool active) { assert(thread_data != NULL); pthread_mutex_lock(&thread_data->active_mutex); thread_data->is_active = active; pthread_mutex_unlock(&thread_data->active_mutex); } -static _Bool virt_notif_thread_is_active(virt_notif_thread_t *thread_data) { - _Bool state = 0; +static bool virt_notif_thread_is_active(virt_notif_thread_t *thread_data) { + bool active = false; assert(thread_data != NULL); pthread_mutex_lock(&thread_data->active_mutex); - state = thread_data->is_active; + active = thread_data->is_active; pthread_mutex_unlock(&thread_data->active_mutex); - return state; + return active; } /* worker function running default event implementation */ @@ -1897,7 +1899,9 @@ static int virt_notif_thread_init(virt_notif_thread_t *thread_data) { * domain_event_cb_id to '-1' */ thread_data->domain_event_cb_id = -1; - thread_data->is_active = 0; + pthread_mutex_lock(&thread_data->active_mutex); + thread_data->is_active = false; + pthread_mutex_unlock(&thread_data->active_mutex); return 0; } @@ -1932,8 +1936,7 @@ static void stop_event_loop(virt_notif_thread_t *thread_data) { virConnectDomainEventDeregisterAny(conn, thread_data->domain_event_cb_id); if (pthread_join(notif_thread.event_loop_tid, NULL) != 0) - ERROR(PLUGIN_NAME " plugin: stopping thread %lu failed", - notif_thread.event_loop_tid); + ERROR(PLUGIN_NAME " plugin: stopping notification thread failed"); } static int persistent_domains_state_notification(void) { @@ -2021,7 +2024,7 @@ static int lv_read(user_data_t *ud) { inst = ud->data; state = &inst->read_state; - _Bool reconnect = conn == NULL ? 1 : 0; + bool reconnect = conn == NULL ? true : false; /* event implementation must be registered before connection is opened */ if (inst->id == 0) { if (!persistent_notification && reconnect) @@ -2531,7 +2534,7 @@ static void free_domains(struct lv_read_state *state) { } static int add_domain(struct lv_read_state *state, virDomainPtr dom, - _Bool active) { + bool active) { domain_t *new_ptr; int new_size = sizeof(state->domains[0]) * (state->nr_domains + 1); @@ -2607,7 +2610,7 @@ static int add_interface_device(struct lv_read_state *state, virDomainPtr dom, struct interface_device *new_ptr; int new_size = sizeof(state->interface_devices[0]) * (state->nr_interface_devices + 1); - char *path_copy, *address_copy, number_string[15]; + char *path_copy, *address_copy, number_string[21]; if ((path == NULL) || (address == NULL)) return EINVAL; @@ -2646,12 +2649,12 @@ static int add_interface_device(struct lv_read_state *state, virDomainPtr dom, static int ignore_device_match(ignorelist_t *il, const char *domname, const char *devpath) { char *name; - int n, r; + int r; if ((domname == NULL) || (devpath == NULL)) return 0; - n = strlen(domname) + strlen(devpath) + 2; + size_t n = strlen(domname) + strlen(devpath) + 2; name = malloc(n); if (name == NULL) { ERROR(PLUGIN_NAME " plugin: malloc failed.");