LCOV - code coverage report
Current view: top level - include/linux - resource_ext.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 0 8 0.0 %
Date: 2021-04-22 12:43:58 Functions: 0 1 0.0 %

          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             : static inline void resource_list_add_tail(struct resource_entry *entry,
      41             :                                           struct list_head *head)
      42             : {
      43             :         list_add_tail(&entry->node, head);
      44             : }
      45             : 
      46           0 : static inline void resource_list_del(struct resource_entry *entry)
      47             : {
      48           0 :         list_del(&entry->node);
      49             : }
      50             : 
      51           0 : static inline void resource_list_free_entry(struct resource_entry *entry)
      52             : {
      53           0 :         kfree(entry);
      54             : }
      55             : 
      56             : static inline void
      57           0 : resource_list_destroy_entry(struct resource_entry *entry)
      58             : {
      59           0 :         resource_list_del(entry);
      60           0 :         resource_list_free_entry(entry);
      61           0 : }
      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