LCOV - code coverage report
Current view: top level - basic - ratelimit.c (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 16 16 100.0 %
Date: 2019-08-23 13:36:53 Functions: 1 1 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 10 12 83.3 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : 
       3                 :            : #include <sys/time.h>
       4                 :            : 
       5                 :            : #include "macro.h"
       6                 :            : #include "ratelimit.h"
       7                 :            : 
       8                 :            : /* Modelled after Linux' lib/ratelimit.c by Dave Young
       9                 :            :  * <hidave.darkstar@gmail.com>, which is licensed GPLv2. */
      10                 :            : 
      11                 :      40136 : bool ratelimit_below(RateLimit *r) {
      12                 :            :         usec_t ts;
      13                 :            : 
      14         [ -  + ]:      40136 :         assert(r);
      15                 :            : 
      16   [ +  +  -  + ]:      40136 :         if (r->interval <= 0 || r->burst <= 0)
      17                 :      40052 :                 return true;
      18                 :            : 
      19                 :         84 :         ts = now(CLOCK_MONOTONIC);
      20                 :            : 
      21         [ +  + ]:         84 :         if (r->begin <= 0 ||
      22         [ +  + ]:         80 :             r->begin + r->interval < ts) {
      23                 :          8 :                 r->begin = ts;
      24                 :            : 
      25                 :            :                 /* Reset counter */
      26                 :          8 :                 r->num = 0;
      27                 :          8 :                 goto good;
      28                 :            :         }
      29                 :            : 
      30         [ +  + ]:         76 :         if (r->num < r->burst)
      31                 :         72 :                 goto good;
      32                 :            : 
      33                 :          4 :         return false;
      34                 :            : 
      35                 :         80 : good:
      36                 :         80 :         r->num++;
      37                 :         80 :         return true;
      38                 :            : }

Generated by: LCOV version 1.14