LCOV - code coverage report
Current view: top level - netio-next/src - semaphore.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 19 19 100.0 %
Date: 2025-08-12 04:15:35 Functions: 4 4 100.0 %

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

Generated by: LCOV version 1.0