LCOV - code coverage report
Current view: top level - netio-next/src - semaphore.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 18 18 100.0 %
Date: 2025-06-10 03:23:28 Functions: 3 3 100.0 %

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

Generated by: LCOV version 1.0