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/module.h> 28 #include <linux/fs.h> 29 #include <linux/pagemap.h> 30 #include <linux/highmem.h> 31 #include <linux/init.h> 32 #include <linux/string.h> 33 #include <linux/smp_lock.h> 34 #include <linux/backing-dev.h> 35 #include <linux/ramfs.h> 36 37 #include <asm/uaccess.h> 38 #include "internal.h" 39 40 struct address_space_operations ramfs_aops = { 41 .readpage = simple_readpage, 42 .prepare_write = simple_prepare_write, 43 .commit_write = simple_commit_write 44 }; 45 46 struct file_operations ramfs_file_operations = { 47 .read = generic_file_read, 48 .write = generic_file_write, 49 .mmap = generic_file_mmap, 50 .fsync = simple_sync_file, 51 .sendfile = generic_file_sendfile, 52 .llseek = generic_file_llseek, 53 }; 54 55 struct inode_operations ramfs_file_inode_operations = { 56 .getattr = simple_getattr, 57 }; 58