X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fcoverage.c;h=8a9d0ea69f5243cfb1839d64218ce30adff93153;hb=4b6b46ce8a846269cf2ac95cea964ced7482030e;hp=6f805e9eacd44b2c9be0fe825708d5629e55bcc7;hpb=67ca9e6d90808f22332cf475ad01e01bf5d46c4f;p=openvswitch diff --git a/lib/coverage.c b/lib/coverage.c index 6f805e9e..8a9d0ea6 100644 --- a/lib/coverage.c +++ b/lib/coverage.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Nicira Networks. + * Copyright (c) 2009, 2010 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,14 +23,15 @@ #include "hash.h" #include "unixctl.h" #include "util.h" - -#define THIS_MODULE VLM_coverage #include "vlog.h" +VLOG_DEFINE_THIS_MODULE(coverage) + static unsigned int epoch; static void -coverage_unixctl_log(struct unixctl_conn *conn, const char *args UNUSED) +coverage_unixctl_log(struct unixctl_conn *conn, const char *args OVS_UNUSED, + void *aux OVS_UNUSED) { coverage_log(VLL_WARN, false); unixctl_command_reply(conn, 200, NULL); @@ -39,7 +40,7 @@ coverage_unixctl_log(struct unixctl_conn *conn, const char *args UNUSED) void coverage_init(void) { - unixctl_command_register("coverage/log", coverage_unixctl_log); + unixctl_command_register("coverage/log", coverage_unixctl_log, NULL); } /* Sorts coverage counters in descending order by count, within equal counts @@ -108,7 +109,7 @@ coverage_hit(uint32_t hash) unsigned int word_mask = 1u << (bit_index % BITS_PER_WORD); if (hit[word_index] & word_mask) { - return true; + return true; } else { hit[word_index] |= word_mask; return false; @@ -122,7 +123,10 @@ coverage_log_counter(enum vlog_level level, const struct coverage_counter *c) } /* Logs the coverage counters at the given vlog 'level'. If - * 'suppress_dups' is true, then duplicate events are not displayed. */ + * 'suppress_dups' is true, then duplicate events are not displayed. + * Care should be taken in the value used for 'level'. Depending on the + * configuration, syslog can write changes synchronously, which can + * cause the coverage messages to take several seconds to write. */ void coverage_log(enum vlog_level level, bool suppress_dups) { @@ -134,8 +138,8 @@ coverage_log(enum vlog_level level, bool suppress_dups) return; } + hash = coverage_hash(); if (suppress_dups) { - hash = coverage_hash(); if (coverage_hit(hash)) { VLOG(level, "Skipping details of duplicate event coverage for " "hash=%08"PRIx32" in epoch %u", hash, epoch);