static int zlogger_unmap(struct thread_table_field *ptr);
-#if (KERNEL_VERSION(3, 17, 0) > LINUX_VERSION_CODE)
-static inline u64 ktime_get_ns(void)
-{
- return ktime_to_ns(ktime_get());
-}
-#endif
-
static struct thread_table_field *get_thread_table(pid_t tid, bool is_stdout)
{
struct thread_table_field *ptr = NULL;
}
/* called under mmap semaphore */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
static vm_fault_t zlogger_fault(struct vm_fault *vmf)
{
struct vm_area_struct *vma = vmf->vma;
-#else
-static int zlogger_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
-{
-#endif
struct thread_table_field *ptr;
void *p = NULL;
struct page *page;
page = virt_to_page((unsigned long)p);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
return vmf_insert_pfn(vma, vma->vm_start, page_to_pfn(page));
-#else
- return vm_insert_pfn(vma, vma->vm_start, page_to_pfn(page));
-#endif
}
static const struct vm_operations_struct zlogger_vm_ops = {
if (!ptr->vma)
return 0;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
if (mmap_write_lock_killable(vma->vm_mm))
return -EINTR;
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0)
- if (down_write_killable(&vma->vm_mm->mmap_sem))
- return -EINTR;
-#else
- down_write(&vma->vm_mm->mmap_sem);
-#endif
zap_vma_ptes(vma, vma->vm_start, vma->vm_end - vma->vm_start);
vma->vm_private_data = NULL;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
mmap_write_unlock(vma->vm_mm);
-#else
- up_write(&vma->vm_mm->mmap_sem);
-#endif
return 0;
}
page = virt_to_page((unsigned long)p);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
if (mmap_write_lock_killable(current->mm))
return -EINTR;
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0)
- if (down_write_killable(¤t->mm->mmap_sem))
- return -EINTR;
-#else
- down_write(¤t->mm->mmap_sem);
-#endif
zap_vma_ptes(vma, vma->vm_start, vma->vm_end - vma->vm_start);
ret = remap_pfn_range(vma, vma->vm_start, page_to_pfn(page), ZLOGGER_BLOCK_SIZE, vma->vm_page_prot);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
mmap_write_unlock(current->mm);
-#else
- up_write(¤t->mm->mmap_sem);
-#endif
return ret;
}