LCOV - code coverage report
Current view: top level - include/linux - resource_ext.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 11 12 91.7 %
Date: 2022-04-01 14:35:51 Functions: 0 0 -
Branches: 1 2 50.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: GPL-2.0-only */
       2                 :            : /*
       3                 :            :  * Copyright (C) 2015, Intel Corporation
       4                 :            :  * Author: Jiang Liu <jiang.liu@linux.intel.com>
       5                 :            :  */
       6                 :            : #ifndef _LINUX_RESOURCE_EXT_H
       7                 :            : #define _LINUX_RESOURCE_EXT_H
       8                 :            : #include <linux/types.h>
       9                 :            : #include <linux/list.h>
      10                 :            : #include <linux/ioport.h>
      11                 :            : #include <linux/slab.h>
      12                 :            : 
      13                 :            : /* Represent resource window for bridge devices */
      14                 :            : struct resource_win {
      15                 :            :         struct resource res;            /* In master (CPU) address space */
      16                 :            :         resource_size_t offset;         /* Translation offset for bridge */
      17                 :            : };
      18                 :            : 
      19                 :            : /*
      20                 :            :  * Common resource list management data structure and interfaces to support
      21                 :            :  * ACPI, PNP and PCI host bridge etc.
      22                 :            :  */
      23                 :            : struct resource_entry {
      24                 :            :         struct list_head        node;
      25                 :            :         struct resource         *res;   /* In master (CPU) address space */
      26                 :            :         resource_size_t         offset; /* Translation offset for bridge */
      27                 :            :         struct resource         __res;  /* Default storage for res */
      28                 :            : };
      29                 :            : 
      30                 :            : extern struct resource_entry *
      31                 :            : resource_list_create_entry(struct resource *res, size_t extra_size);
      32                 :            : extern void resource_list_free(struct list_head *head);
      33                 :            : 
      34                 :            : static inline void resource_list_add(struct resource_entry *entry,
      35                 :            :                                      struct list_head *head)
      36                 :            : {
      37                 :            :         list_add(&entry->node, head);
      38                 :            : }
      39                 :            : 
      40                 :        378 : static inline void resource_list_add_tail(struct resource_entry *entry,
      41                 :            :                                           struct list_head *head)
      42                 :            : {
      43                 :        378 :         list_add_tail(&entry->node, head);
      44                 :        231 : }
      45                 :            : 
      46                 :        273 : static inline void resource_list_del(struct resource_entry *entry)
      47                 :            : {
      48         [ -  + ]:        273 :         list_del(&entry->node);
      49                 :            : }
      50                 :            : 
      51                 :         63 : static inline void resource_list_free_entry(struct resource_entry *entry)
      52                 :            : {
      53                 :         63 :         kfree(entry);
      54                 :          0 : }
      55                 :            : 
      56                 :            : static inline void
      57                 :         63 : resource_list_destroy_entry(struct resource_entry *entry)
      58                 :            : {
      59                 :         63 :         resource_list_del(entry);
      60                 :         63 :         resource_list_free_entry(entry);
      61                 :         21 : }
      62                 :            : 
      63                 :            : #define resource_list_for_each_entry(entry, list)       \
      64                 :            :         list_for_each_entry((entry), (list), node)
      65                 :            : 
      66                 :            : #define resource_list_for_each_entry_safe(entry, tmp, list)     \
      67                 :            :         list_for_each_entry_safe((entry), (tmp), (list), node)
      68                 :            : 
      69                 :            : static inline struct resource_entry *
      70                 :            : resource_list_first_type(struct list_head *list, unsigned long type)
      71                 :            : {
      72                 :            :         struct resource_entry *entry;
      73                 :            : 
      74                 :            :         resource_list_for_each_entry(entry, list) {
      75                 :            :                 if (resource_type(entry->res) == type)
      76                 :            :                         return entry;
      77                 :            :         }
      78                 :            :         return NULL;
      79                 :            : }
      80                 :            : 
      81                 :            : #endif /* _LINUX_RESOURCE_EXT_H */

Generated by: LCOV version 1.14