X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fmcelog.c;h=4e514004a6261995a3285810b76ce923a74555b1;hp=22c8807c9e7d6280c07d3959e9f20d57423e3bb7;hb=06a86a60a7dabc685bdbd81ce3d36ea5f7e2c2d4;hpb=532328916d6a3037b67a6c3916079931c3429050 diff --git a/src/mcelog.c b/src/mcelog.c index 22c8807c..4e514004 100644 --- a/src/mcelog.c +++ b/src/mcelog.c @@ -52,11 +52,11 @@ #define MCELOG_UNCORRECTED_ERR_TYPE_INS "uncorrected_memory_errors" typedef struct mcelog_config_s { - char logfile[PATH_MAX]; /* mcelog logfile */ - pthread_t tid; /* poll thread id */ - llist_t *dimms_list; /* DIMMs list */ + char logfile[PATH_MAX]; /* mcelog logfile */ + pthread_t tid; /* poll thread id */ + llist_t *dimms_list; /* DIMMs list */ pthread_mutex_t dimms_lock; /* lock for dimms cache */ - _Bool persist; + bool persist; } mcelog_config_t; typedef struct socket_adapter_s socket_adapter_t; @@ -75,12 +75,12 @@ struct socket_adapter_s { typedef struct mcelog_memory_rec_s { int corrected_err_total; /* x total*/ int corrected_err_timed; /* x in 24h*/ - char corrected_err_timed_period[DATA_MAX_NAME_LEN]; + char corrected_err_timed_period[DATA_MAX_NAME_LEN / 2]; int uncorrected_err_total; /* x total*/ int uncorrected_err_timed; /* x in 24h*/ - char uncorrected_err_timed_period[DATA_MAX_NAME_LEN]; - char location[DATA_MAX_NAME_LEN]; /* SOCKET x CHANNEL x DIMM x*/ - char dimm_name[DATA_MAX_NAME_LEN]; /* DMI_NAME "DIMM_F1" */ + char uncorrected_err_timed_period[DATA_MAX_NAME_LEN / 2]; + char location[DATA_MAX_NAME_LEN / 2]; /* SOCKET x CHANNEL x DIMM x*/ + char dimm_name[DATA_MAX_NAME_LEN / 2]; /* DMI_NAME "DIMM_F1" */ } mcelog_memory_rec_t; static int socket_close(socket_adapter_t *self); @@ -90,7 +90,7 @@ static int socket_reinit(socket_adapter_t *self); static int socket_receive(socket_adapter_t *self, FILE **p_file); static mcelog_config_t g_mcelog_config = { - .logfile = "/var/log/mcelog", .persist = 0, + .logfile = "/var/log/mcelog", .persist = false, }; static socket_adapter_t socket_adapter = { @@ -106,8 +106,8 @@ static socket_adapter_t socket_adapter = { .receive = socket_receive, }; -static _Bool mcelog_thread_running; -static _Bool mcelog_apply_defaults; +static bool mcelog_thread_running; +static bool mcelog_apply_defaults; static void mcelog_free_dimms_list_records(llist_t *dimms_list) { @@ -124,8 +124,8 @@ static llentry_t *mcelog_dimm(const mcelog_memory_rec_t *rec, char dimm_name[DATA_MAX_NAME_LEN]; if (strlen(rec->dimm_name) > 0) { - ssnprintf(dimm_name, sizeof(dimm_name), "%s_%s", rec->location, - rec->dimm_name); + snprintf(dimm_name, sizeof(dimm_name), "%s_%s", rec->location, + rec->dimm_name); } else sstrncpy(dimm_name, rec->location, sizeof(dimm_name)); @@ -237,15 +237,12 @@ static int socket_close(socket_adapter_t *self) { int ret = 0; pthread_rwlock_rdlock(&self->lock); if (fcntl(self->sock_fd, F_GETFL) != -1) { - char errbuf[MCELOG_BUFF_SIZE]; if (shutdown(self->sock_fd, SHUT_RDWR) != 0) { - ERROR(MCELOG_PLUGIN ": Socket shutdown failed: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR(MCELOG_PLUGIN ": Socket shutdown failed: %s", STRERRNO); ret = -1; } if (close(self->sock_fd) != 0) { - ERROR(MCELOG_PLUGIN ": Socket close failed: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR(MCELOG_PLUGIN ": Socket close failed: %s", STRERRNO); ret = -1; } } @@ -257,7 +254,7 @@ static int socket_write(socket_adapter_t *self, const char *msg, const size_t len) { int ret = 0; pthread_rwlock_rdlock(&self->lock); - if (swrite(self->sock_fd, msg, len) < 0) + if (swrite(self->sock_fd, msg, len) != 0) ret = -1; pthread_rwlock_unlock(&self->lock); return ret; @@ -277,7 +274,6 @@ static void mcelog_dispatch_notification(notification_t *n) { } static int socket_reinit(socket_adapter_t *self) { - char errbuff[MCELOG_BUFF_SIZE]; int ret = -1; cdtime_t interval = plugin_get_interval(); struct timeval socket_timeout = CDTIME_T_TO_TIMEVAL(interval); @@ -287,8 +283,7 @@ static int socket_reinit(socket_adapter_t *self) { self->sock_fd = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 0); if (self->sock_fd < 0) { - ERROR(MCELOG_PLUGIN ": Could not create a socket. %s", - sstrerror(errno, errbuff, sizeof(errbuff))); + ERROR(MCELOG_PLUGIN ": Could not create a socket. %s", STRERRNO); pthread_rwlock_unlock(&self->lock); return ret; } @@ -304,8 +299,7 @@ static int socket_reinit(socket_adapter_t *self) { pthread_rwlock_rdlock(&self->lock); if (connect(self->sock_fd, (struct sockaddr *)&(self->unix_sock), sizeof(self->unix_sock)) < 0) { - ERROR(MCELOG_PLUGIN ": Failed to connect to mcelog server. %s", - sstrerror(errno, errbuff, sizeof(errbuff))); + ERROR(MCELOG_PLUGIN ": Failed to connect to mcelog server. %s", STRERRNO); self->close(self); ret = -1; } else { @@ -361,8 +355,8 @@ static int mcelog_dispatch_mem_notifications(const mcelog_memory_rec_t *mr) { sstrncpy(n.host, hostname_g, sizeof(n.host)); if (mr->dimm_name[0] != '\0') - ssnprintf(n.plugin_instance, sizeof(n.plugin_instance), "%s_%s", - mr->location, mr->dimm_name); + snprintf(n.plugin_instance, sizeof(n.plugin_instance), "%s_%s", + mr->location, mr->dimm_name); else sstrncpy(n.plugin_instance, mr->location, sizeof(n.plugin_instance)); @@ -373,7 +367,7 @@ static int mcelog_dispatch_mem_notifications(const mcelog_memory_rec_t *mr) { mr->corrected_err_total); plugin_notification_meta_add_signed_int(&n, MCELOG_CORRECTED_ERR_TIMED, mr->corrected_err_timed); - ssnprintf(n.message, sizeof(n.message), MCELOG_CORRECTED_ERR); + snprintf(n.message, sizeof(n.message), MCELOG_CORRECTED_ERR); sstrncpy(n.type_instance, MCELOG_CORRECTED_ERR_TYPE_INS, sizeof(n.type_instance)); plugin_dispatch_notification(&n); @@ -389,7 +383,7 @@ static int mcelog_dispatch_mem_notifications(const mcelog_memory_rec_t *mr) { mr->uncorrected_err_total); plugin_notification_meta_add_signed_int(&n, MCELOG_UNCORRECTED_ERR_TIMED, mr->uncorrected_err_timed); - ssnprintf(n.message, sizeof(n.message), MCELOG_UNCORRECTED_ERR); + snprintf(n.message, sizeof(n.message), MCELOG_UNCORRECTED_ERR); sstrncpy(n.type_instance, MCELOG_UNCORRECTED_ERR_TYPE_INS, sizeof(n.type_instance)); n.severity = NOTIF_FAILURE; @@ -427,15 +421,15 @@ static int mcelog_submit(const mcelog_memory_rec_t *mr) { mcelog_update_dimm_stats(dimm, mr); if (mr->dimm_name[0] != '\0') - ssnprintf(vl.plugin_instance, sizeof(vl.plugin_instance), "%s_%s", - mr->location, mr->dimm_name); + snprintf(vl.plugin_instance, sizeof(vl.plugin_instance), "%s_%s", + mr->location, mr->dimm_name); else sstrncpy(vl.plugin_instance, mr->location, sizeof(vl.plugin_instance)); plugin_dispatch_values(&vl); - ssnprintf(vl.type_instance, sizeof(vl.type_instance), - "corrected_memory_errors_in_%s", mr->corrected_err_timed_period); + snprintf(vl.type_instance, sizeof(vl.type_instance), + "corrected_memory_errors_in_%s", mr->corrected_err_timed_period); vl.values = &(value_t){.derive = (derive_t)mr->corrected_err_timed}; plugin_dispatch_values(&vl); @@ -444,9 +438,8 @@ static int mcelog_submit(const mcelog_memory_rec_t *mr) { vl.values = &(value_t){.derive = (derive_t)mr->uncorrected_err_total}; plugin_dispatch_values(&vl); - ssnprintf(vl.type_instance, sizeof(vl.type_instance), - "uncorrected_memory_errors_in_%s", - mr->uncorrected_err_timed_period); + snprintf(vl.type_instance, sizeof(vl.type_instance), + "uncorrected_memory_errors_in_%s", mr->uncorrected_err_timed_period); vl.values = &(value_t){.derive = (derive_t)mr->uncorrected_err_timed}; plugin_dispatch_values(&vl); @@ -535,9 +528,7 @@ static int socket_receive(socket_adapter_t *self, FILE **pp_file) { if ((res = poll(&poll_fd, 1, MCELOG_POLL_TIMEOUT)) <= 0) { if (res != 0 && errno != EINTR) { - char errbuf[MCELOG_BUFF_SIZE]; - ERROR("mcelog: poll failed: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("mcelog: poll failed: %s", STRERRNO); } pthread_rwlock_unlock(&self->lock); return res; @@ -572,12 +563,10 @@ static int socket_receive(socket_adapter_t *self, FILE **pp_file) { } static void *poll_worker(__attribute__((unused)) void *arg) { - char errbuf[MCELOG_BUFF_SIZE]; mcelog_thread_running = 1; FILE **pp_file = calloc(1, sizeof(*pp_file)); if (pp_file == NULL) { - ERROR("mcelog: memory allocation failed: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("mcelog: memory allocation failed: %s", STRERRNO); pthread_exit((void *)1); }