LCOV - code coverage report
Current view: top level - mm - pgalloc-track.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 9 9 100.0 %
Date: 2023-08-24 13:40:31 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _LINUX_PGALLOC_TRACK_H
       3             : #define _LINUX_PGALLOC_TRACK_H
       4             : 
       5             : #if defined(CONFIG_MMU)
       6             : static inline p4d_t *p4d_alloc_track(struct mm_struct *mm, pgd_t *pgd,
       7             :                                      unsigned long address,
       8             :                                      pgtbl_mod_mask *mod_mask)
       9             : {
      10          16 :         if (unlikely(pgd_none(*pgd))) {
      11             :                 if (__p4d_alloc(mm, pgd, address))
      12             :                         return NULL;
      13             :                 *mod_mask |= PGTBL_PGD_MODIFIED;
      14             :         }
      15             : 
      16          16 :         return p4d_offset(pgd, address);
      17             : }
      18             : 
      19             : static inline pud_t *pud_alloc_track(struct mm_struct *mm, p4d_t *p4d,
      20             :                                      unsigned long address,
      21             :                                      pgtbl_mod_mask *mod_mask)
      22             : {
      23          16 :         if (unlikely(p4d_none(*p4d))) {
      24             :                 if (__pud_alloc(mm, p4d, address))
      25             :                         return NULL;
      26             :                 *mod_mask |= PGTBL_P4D_MODIFIED;
      27             :         }
      28             : 
      29          16 :         return pud_offset(p4d, address);
      30             : }
      31             : 
      32          16 : static inline pmd_t *pmd_alloc_track(struct mm_struct *mm, pud_t *pud,
      33             :                                      unsigned long address,
      34             :                                      pgtbl_mod_mask *mod_mask)
      35             : {
      36          16 :         if (unlikely(pud_none(*pud))) {
      37           1 :                 if (__pmd_alloc(mm, pud, address))
      38             :                         return NULL;
      39           1 :                 *mod_mask |= PGTBL_PUD_MODIFIED;
      40             :         }
      41             : 
      42          16 :         return pmd_offset(pud, address);
      43             : }
      44             : #endif /* CONFIG_MMU */
      45             : 
      46             : #define pte_alloc_kernel_track(pmd, address, mask)                      \
      47             :         ((unlikely(pmd_none(*(pmd))) &&                                 \
      48             :           (__pte_alloc_kernel(pmd) || ({*(mask)|=PGTBL_PMD_MODIFIED;0;})))?\
      49             :                 NULL: pte_offset_kernel(pmd, address))
      50             : 
      51             : #endif /* _LINUX_PGALLOC_TRACK_H */

Generated by: LCOV version 1.14