LCOV - code coverage report
Current view: top level - mm - page_reporting.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 4 7 57.1 %
Date: 2021-04-22 12:43:58 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _MM_PAGE_REPORTING_H
       3             : #define _MM_PAGE_REPORTING_H
       4             : 
       5             : #include <linux/mmzone.h>
       6             : #include <linux/pageblock-flags.h>
       7             : #include <linux/page-isolation.h>
       8             : #include <linux/jump_label.h>
       9             : #include <linux/slab.h>
      10             : #include <linux/pgtable.h>
      11             : #include <linux/scatterlist.h>
      12             : 
      13             : #define PAGE_REPORTING_MIN_ORDER        pageblock_order
      14             : 
      15             : #ifdef CONFIG_PAGE_REPORTING
      16             : DECLARE_STATIC_KEY_FALSE(page_reporting_enabled);
      17             : void __page_reporting_notify(void);
      18             : 
      19       97243 : static inline bool page_reported(struct page *page)
      20             : {
      21       97243 :         return static_branch_unlikely(&page_reporting_enabled) &&
      22           0 :                PageReported(page);
      23             : }
      24             : 
      25             : /**
      26             :  * page_reporting_notify_free - Free page notification to start page processing
      27             :  *
      28             :  * This function is meant to act as a screener for __page_reporting_notify
      29             :  * which will determine if a give zone has crossed over the high-water mark
      30             :  * that will justify us beginning page treatment. If we have crossed that
      31             :  * threshold then it will start the process of pulling some pages and
      32             :  * placing them in the batch list for treatment.
      33             :  */
      34       37450 : static inline void page_reporting_notify_free(unsigned int order)
      35             : {
      36             :         /* Called from hot path in __free_one_page() */
      37       37450 :         if (!static_branch_unlikely(&page_reporting_enabled))
      38             :                 return;
      39             : 
      40             :         /* Determine if we have crossed reporting threshold */
      41           0 :         if (order < PAGE_REPORTING_MIN_ORDER)
      42             :                 return;
      43             : 
      44             :         /* This will add a few cycles, but should be called infrequently */
      45           0 :         __page_reporting_notify();
      46             : }
      47             : #else /* CONFIG_PAGE_REPORTING */
      48             : #define page_reported(_page)    false
      49             : 
      50             : static inline void page_reporting_notify_free(unsigned int order)
      51             : {
      52             : }
      53             : #endif /* CONFIG_PAGE_REPORTING */
      54             : #endif /*_MM_PAGE_REPORTING_H */

Generated by: LCOV version 1.14