From: phk Date: Sun, 9 Nov 2008 14:26:24 +0000 (+0000) Subject: A couple of stylistisc FlexeLint v9 nits, and some additions to the .lnt X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6902c1a9a357167a571d222492c0f31b74ce2817;p=varnish A couple of stylistisc FlexeLint v9 nits, and some additions to the .lnt file. Unfortunately the thread support in FlexeLint is not quite up to our standards of creative locking. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3365 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- diff --git a/varnish-cache/bin/varnishd/cache.h b/varnish-cache/bin/varnishd/cache.h index 78b1e90d..9bac7e52 100644 --- a/varnish-cache/bin/varnishd/cache.h +++ b/varnish-cache/bin/varnishd/cache.h @@ -615,6 +615,22 @@ void SMS_Finish(struct object *obj); #define MTX pthread_mutex_t #define MTX_INIT(foo) AZ(pthread_mutex_init(foo, NULL)) #define MTX_DESTROY(foo) AZ(pthread_mutex_destroy(foo)) + +#ifdef __flexelint_v9__ +#define TRYLOCK(foo, r) \ +do { \ + (r) = pthread_mutex_trylock(foo); \ +} while (0) +#define LOCK(foo) \ +do { \ + AZ(pthread_mutex_lock(foo)); \ +} while (0) +#define UNLOCK(foo) \ +do { \ + AZ(pthread_mutex_unlock(foo)); \ +} while (0) + +#else #define TRYLOCK(foo, r) \ do { \ (r) = pthread_mutex_trylock(foo); \ @@ -652,6 +668,7 @@ do { \ "MTX_UNLOCK(%s,%s,%d," #foo ")", \ __func__, __FILE__, __LINE__); \ } while (0) +#endif #if defined(HAVE_PTHREAD_MUTEX_ISOWNED_NP) #define ALOCKED(mutex) AN(pthread_mutex_isowned_np((mutex))) @@ -693,8 +710,7 @@ Tlen(const txt t) { Tcheck(t); - return - ((unsigned)(t.e - t.b)); + return ((unsigned)(t.e - t.b)); } static inline void diff --git a/varnish-cache/bin/varnishd/cache_acceptor_poll.c b/varnish-cache/bin/varnishd/cache_acceptor_poll.c index d9a0b19f..336edd64 100644 --- a/varnish-cache/bin/varnishd/cache_acceptor_poll.c +++ b/varnish-cache/bin/varnishd/cache_acceptor_poll.c @@ -55,7 +55,7 @@ static void vca_pollspace(unsigned fd) { struct pollfd *newpollfd = pollfd; - unsigned newnpoll = npoll; + unsigned newnpoll; if (fd < npoll) return; diff --git a/varnish-cache/bin/varnishd/flint.lnt b/varnish-cache/bin/varnishd/flint.lnt index 480c7a9d..a5e83ecd 100644 --- a/varnish-cache/bin/varnishd/flint.lnt +++ b/varnish-cache/bin/varnishd/flint.lnt @@ -1,4 +1,46 @@ --passes=3 + +-d__flexelint_v9__=1 + +//-sem (pthread_mutex_lock, thread_lock) +-sem (pthread_mutex_trylock, thread_lock) +-sem (VBE_DropRefLocked, thread_unlock) +-e459 // unlocked access from func-ptr +-e454 // mutex not released (...ReleaseLocked) +-e457 // unprotected access + +-esym(458, lbv_assert) // unlocked access +-esym(458, params) // unlocked access + +-emacro(835, HTTPH) // Info 835: A zero has been given as left argument to operator '&' +-emacro(845, HTTPH) // Info 845: The left argument to operator '&&' is certain to be 0 +////////////// +-efunc(1791, pdiff) // return last on line +////////////// +-efile(451, "sys/*.h") // No include guard +-efile(451, "machine/*.h") // No include guard +-efile(451, "vcl_returns.h") // No include guard +-efile(451, "cache_backend_poll.h") // No include guard +-efile(451, "steps.h") // No include guard +-efile(451, "http_headers.h") // No include guard +-efile(451, "stat_field.h") // No include guard +-efile(451, "acct_fields.h") // No include guard +-efile(451, "config.h") // No include guard +////////////// +// -e458 // unprotected access +// -e456 // merged locking paths +-sem(vca_thread_acct, thread_mono) +-sem(vca_epoll_thread, thread_mono) +-sem(vca_kqueue_thread, thread_mono) +-sem(vca_poll_thread, thread_mono) +-sem(vca_ports_thread, thread_mono) +-sem(exp_timer, thread_mono) +-sem(wrk_herdtimer_thread, thread_mono) +-sem(wrk_herder_thread, thread_mono) +-esym(458, VSL_stats) +-esym(458, heritage) +-esym(458, name_key) +////////////// +-passes=1 +libh mgt_event.h +libh ../../config.h