LCOV - code coverage report
Current view: top level - src - semaphore.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 18 18 100.0 %
Date: 2025-11-26 02:09:04 Functions: 4 4 100.0 %

          Line data    Source code
       1             : #include <string.h>
       2             : #include "netio/netio.h"
       3             : 
       4             : 
       5             : static void
       6     1001575 : check_and_trigger(struct netio_semaphore* sem)
       7             : {
       8     1001575 :   if(sem->threshold > 0 && sem->current >= sem->threshold) {
       9      500529 :     if(sem->cb) {
      10      500529 :       sem->cb(sem->data);
      11             :     }
      12      500529 :     sem->threshold = 0; // semaphores only fire once
      13             :   }
      14     1001575 : }
      15             : 
      16      500531 : void netio_semaphore_init(struct netio_semaphore* sem, unsigned threshold)
      17             : {
      18      500531 :   memset(sem, 0, sizeof(*sem));
      19      500531 :   sem->threshold = threshold;
      20             :   sem->current = 0;
      21      500531 : }
      22             : 
      23             : 
      24      501048 : void netio_semaphore_increment(struct netio_semaphore* sem, unsigned n)
      25             : {
      26      501048 :   sem->current += n;
      27      501048 :   check_and_trigger(sem);
      28      501048 : }
      29             : 
      30             : 
      31      500527 : void netio_semphore_set_threshold(struct netio_semaphore* sem, unsigned t)
      32             : {
      33      500527 :   sem->threshold = t;
      34      500527 :   check_and_trigger(sem);
      35      500527 : }

Generated by: LCOV version 1.0