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