cregit-Linux how code gets into the kernel

Release 4.15 include/linux/userfaultfd_k.h

Directory: include/linux
/* SPDX-License-Identifier: GPL-2.0 */
/*
 *  include/linux/userfaultfd_k.h
 *
 *  Copyright (C) 2015  Red Hat, Inc.
 *
 */

#ifndef _LINUX_USERFAULTFD_K_H

#define _LINUX_USERFAULTFD_K_H

#ifdef CONFIG_USERFAULTFD

#include <linux/userfaultfd.h> /* linux/include/uapi/linux/userfaultfd.h */

#include <linux/fcntl.h>

/*
 * CAREFUL: Check include/uapi/asm-generic/fcntl.h when defining
 * new flags, since they might collide with O_* ones. We want
 * to re-use O_* flags that couldn't possibly have a meaning
 * from userfaultfd, in order to leave a free define-space for
 * shared O_* flags.
 */

#define UFFD_CLOEXEC O_CLOEXEC

#define UFFD_NONBLOCK O_NONBLOCK


#define UFFD_SHARED_FCNTL_FLAGS (O_CLOEXEC | O_NONBLOCK)

#define UFFD_FLAGS_SET (EFD_SHARED_FCNTL_FLAGS)

extern int handle_userfault(struct vm_fault *vmf, unsigned long reason);

extern ssize_t mcopy_atomic(struct mm_struct *dst_mm, unsigned long dst_start,
			    unsigned long src_start, unsigned long len);
extern ssize_t mfill_zeropage(struct mm_struct *dst_mm,
			      unsigned long dst_start,
			      unsigned long len);

/* mm helpers */

static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma, struct vm_userfaultfd_ctx vm_ctx) { return vma->vm_userfaultfd_ctx.ctx == vm_ctx.ctx; }

Contributors

PersonTokensPropCommitsCommitProp
Andrea Arcangeli27100.00%1100.00%
Total27100.00%1100.00%


static inline bool userfaultfd_missing(struct vm_area_struct *vma) { return vma->vm_flags & VM_UFFD_MISSING; }

Contributors

PersonTokensPropCommitsCommitProp
Andrea Arcangeli19100.00%1100.00%
Total19100.00%1100.00%


static inline bool userfaultfd_armed(struct vm_area_struct *vma) { return vma->vm_flags & (VM_UFFD_MISSING | VM_UFFD_WP); }

Contributors

PersonTokensPropCommitsCommitProp
Andrea Arcangeli23100.00%1100.00%
Total23100.00%1100.00%

extern int dup_userfaultfd(struct vm_area_struct *, struct list_head *); extern void dup_userfaultfd_complete(struct list_head *); extern void mremap_userfaultfd_prep(struct vm_area_struct *, struct vm_userfaultfd_ctx *); extern void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *, unsigned long from, unsigned long to, unsigned long len); extern bool userfaultfd_remove(struct vm_area_struct *vma, unsigned long start, unsigned long end); extern int userfaultfd_unmap_prep(struct vm_area_struct *vma, unsigned long start, unsigned long end, struct list_head *uf); extern void userfaultfd_unmap_complete(struct mm_struct *mm, struct list_head *uf); #else /* CONFIG_USERFAULTFD */ /* mm helpers */
static inline int handle_userfault(struct vm_fault *vmf, unsigned long reason) { return VM_FAULT_SIGBUS; }

Contributors

PersonTokensPropCommitsCommitProp
Andrea Arcangeli1789.47%150.00%
Jan Kara210.53%150.00%
Total19100.00%2100.00%


static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma, struct vm_userfaultfd_ctx vm_ctx) { return true; }

Contributors

PersonTokensPropCommitsCommitProp
Andrea Arcangeli19100.00%1100.00%
Total19100.00%1100.00%


static inline bool userfaultfd_missing(struct vm_area_struct *vma) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
Andrea Arcangeli15100.00%1100.00%
Total15100.00%1100.00%


static inline bool userfaultfd_armed(struct vm_area_struct *vma) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
Andrea Arcangeli15100.00%1100.00%
Total15100.00%1100.00%


static inline int dup_userfaultfd(struct vm_area_struct *vma, struct list_head *l) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Emelyanov20100.00%1100.00%
Total20100.00%1100.00%


static inline void dup_userfaultfd_complete(struct list_head *l) { }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Emelyanov11100.00%1100.00%
Total11100.00%1100.00%


static inline void mremap_userfaultfd_prep(struct vm_area_struct *vma, struct vm_userfaultfd_ctx *ctx) { }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Emelyanov16100.00%1100.00%
Total16100.00%1100.00%


static inline void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *ctx, unsigned long from, unsigned long to, unsigned long len) { }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Emelyanov2295.65%150.00%
Andrea Arcangeli14.35%150.00%
Total23100.00%2100.00%


static inline bool userfaultfd_remove(struct vm_area_struct *vma, unsigned long start, unsigned long end) { return true; }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Emelyanov1669.57%133.33%
Andrea Arcangeli626.09%133.33%
Mike Rapoport14.35%133.33%
Total23100.00%3100.00%


static inline int userfaultfd_unmap_prep(struct vm_area_struct *vma, unsigned long start, unsigned long end, struct list_head *uf) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Mike Rapoport28100.00%1100.00%
Total28100.00%1100.00%


static inline void userfaultfd_unmap_complete(struct mm_struct *mm, struct list_head *uf) { }

Contributors

PersonTokensPropCommitsCommitProp
Mike Rapoport16100.00%1100.00%
Total16100.00%1100.00%

#endif /* CONFIG_USERFAULTFD */ #endif /* _LINUX_USERFAULTFD_K_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Andrea Arcangeli24149.59%436.36%
Pavel Emelyanov15632.10%327.27%
Mike Rapoport8417.28%218.18%
Jan Kara40.82%19.09%
Greg Kroah-Hartman10.21%19.09%
Total486100.00%11100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.