LCOV - code coverage report
Current view: top level - io_uring - alloc_cache.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 14 0.0 %
Date: 2023-03-27 20:00:47 Functions: 0 0 -

          Line data    Source code
       1             : #ifndef IOU_ALLOC_CACHE_H
       2             : #define IOU_ALLOC_CACHE_H
       3             : 
       4             : /*
       5             :  * Don't allow the cache to grow beyond this size.
       6             :  */
       7             : #define IO_ALLOC_CACHE_MAX      512
       8             : 
       9             : struct io_cache_entry {
      10             :         struct hlist_node       node;
      11             : };
      12             : 
      13             : static inline bool io_alloc_cache_put(struct io_alloc_cache *cache,
      14             :                                       struct io_cache_entry *entry)
      15             : {
      16           0 :         if (cache->nr_cached < IO_ALLOC_CACHE_MAX) {
      17           0 :                 cache->nr_cached++;
      18           0 :                 hlist_add_head(&entry->node, &cache->list);
      19             :                 return true;
      20             :         }
      21             :         return false;
      22             : }
      23             : 
      24             : static inline struct io_cache_entry *io_alloc_cache_get(struct io_alloc_cache *cache)
      25             : {
      26           0 :         if (!hlist_empty(&cache->list)) {
      27           0 :                 struct hlist_node *node = cache->list.first;
      28             : 
      29           0 :                 hlist_del(node);
      30           0 :                 return container_of(node, struct io_cache_entry, node);
      31             :         }
      32             : 
      33             :         return NULL;
      34             : }
      35             : 
      36             : static inline void io_alloc_cache_init(struct io_alloc_cache *cache)
      37             : {
      38           0 :         INIT_HLIST_HEAD(&cache->list);
      39           0 :         cache->nr_cached = 0;
      40             : }
      41             : 
      42             : static inline void io_alloc_cache_free(struct io_alloc_cache *cache,
      43             :                                         void (*free)(struct io_cache_entry *))
      44             : {
      45           0 :         while (!hlist_empty(&cache->list)) {
      46           0 :                 struct hlist_node *node = cache->list.first;
      47             : 
      48           0 :                 hlist_del(node);
      49           0 :                 free(container_of(node, struct io_cache_entry, node));
      50             :         }
      51           0 :         cache->nr_cached = 0;
      52             : }
      53             : #endif

Generated by: LCOV version 1.14