aboutsummaryrefslogtreecommitdiffstats
path: root/ipc/shm.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2006-01-06 03:11:42 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-06 11:33:32 -0500
commitb0e15190ead07056ab0c3844a499ff35e66d27cc (patch)
tree0601a8d68fa051a7ee85d22640e982c0a64f0efc /ipc/shm.c
parent642fb4d1f1dd2417aa69189fe5ceb81e4fb72900 (diff)
[PATCH] NOMMU: Make SYSV IPC SHM use ramfs facilities on NOMMU
The attached patch makes the SYSV IPC shared memory facilities use the new ramfs facilities on a no-MMU kernel. The following changes are made: (1) There are now shmem_mmap() and shmem_get_unmapped_area() functions to allow the IPC SHM facilities to commune with the tiny-shmem and shmem code. (2) ramfs files now need resizing using do_truncate() rather than by modifying the inode size directly (see shmem_file_setup()). This causes ramfs to attempt to bind a block of pages of sufficient size to the inode. (3) CONFIG_SYSVIPC is no longer contingent on CONFIG_MMU. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'ipc/shm.c')
-rw-r--r--ipc/shm.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/ipc/shm.c b/ipc/shm.c
index 587d836d80d9..0ef4a1cf3e27 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -157,14 +157,22 @@ static void shm_close (struct vm_area_struct *shmd)
157 157
158static int shm_mmap(struct file * file, struct vm_area_struct * vma) 158static int shm_mmap(struct file * file, struct vm_area_struct * vma)
159{ 159{
160 file_accessed(file); 160 int ret;
161 vma->vm_ops = &shm_vm_ops; 161
162 shm_inc(file->f_dentry->d_inode->i_ino); 162 ret = shmem_mmap(file, vma);
163 return 0; 163 if (ret == 0) {
164 vma->vm_ops = &shm_vm_ops;
165 shm_inc(file->f_dentry->d_inode->i_ino);
166 }
167
168 return ret;
164} 169}
165 170
166static struct file_operations shm_file_operations = { 171static struct file_operations shm_file_operations = {
167 .mmap = shm_mmap 172 .mmap = shm_mmap,
173#ifndef CONFIG_MMU
174 .get_unmapped_area = shmem_get_unmapped_area,
175#endif
168}; 176};
169 177
170static struct vm_operations_struct shm_vm_ops = { 178static struct vm_operations_struct shm_vm_ops = {