root/include/linux/resource_ext.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. resource_list_add
  2. resource_list_add_tail
  3. resource_list_del
  4. resource_list_free_entry
  5. resource_list_destroy_entry

   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 static inline void resource_list_del(struct resource_entry *entry)
  47 {
  48         list_del(&entry->node);
  49 }
  50 
  51 static inline void resource_list_free_entry(struct resource_entry *entry)
  52 {
  53         kfree(entry);
  54 }
  55 
  56 static inline void
  57 resource_list_destroy_entry(struct resource_entry *entry)
  58 {
  59         resource_list_del(entry);
  60         resource_list_free_entry(entry);
  61 }
  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 #endif /* _LINUX_RESOURCE_EXT_H */

/* [<][>][^][v][top][bottom][index][help] */