Branch data Line data Source code
1 : : /* file-mmu.c: ramfs MMU-based file operations 2 : : * 3 : : * Resizable simple ram filesystem for Linux. 4 : : * 5 : : * Copyright (C) 2000 Linus Torvalds. 6 : : * 2000 Transmeta Corp. 7 : : * 8 : : * Usage limits added by David Gibson, Linuxcare Australia. 9 : : * This file is released under the GPL. 10 : : */ 11 : : 12 : : /* 13 : : * NOTE! This filesystem is probably most useful 14 : : * not as a real filesystem, but as an example of 15 : : * how virtual filesystems can be written. 16 : : * 17 : : * It doesn't get much simpler than this. Consider 18 : : * that this file implements the full semantics of 19 : : * a POSIX-compliant read-write filesystem. 20 : : * 21 : : * Note in particular how the filesystem does not 22 : : * need to implement any data structures of its own 23 : : * to keep track of the virtual data: using the VFS 24 : : * caches is sufficient. 25 : : */ 26 : : 27 : : #include <linux/fs.h> 28 : : #include <linux/mm.h> 29 : : #include <linux/ramfs.h> 30 : : #include <linux/sched.h> 31 : : 32 : : #include "internal.h" 33 : : 34 : 0 : static unsigned long ramfs_mmu_get_unmapped_area(struct file *file, 35 : : unsigned long addr, unsigned long len, unsigned long pgoff, 36 : : unsigned long flags) 37 : : { 38 : 0 : return current->mm->get_unmapped_area(file, addr, len, pgoff, flags); 39 : : } 40 : : 41 : : const struct file_operations ramfs_file_operations = { 42 : : .read_iter = generic_file_read_iter, 43 : : .write_iter = generic_file_write_iter, 44 : : .mmap = generic_file_mmap, 45 : : .fsync = noop_fsync, 46 : : .splice_read = generic_file_splice_read, 47 : : .splice_write = iter_file_splice_write, 48 : : .llseek = generic_file_llseek, 49 : : .get_unmapped_area = ramfs_mmu_get_unmapped_area, 50 : : }; 51 : : 52 : : const struct inode_operations ramfs_file_inode_operations = { 53 : : .setattr = simple_setattr, 54 : : .getattr = simple_getattr, 55 : : };