diff options
author | David Howells <dhowells@redhat.com> | 2006-01-06 03:11:42 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-06 11:33:32 -0500 |
commit | b0e15190ead07056ab0c3844a499ff35e66d27cc (patch) | |
tree | 0601a8d68fa051a7ee85d22640e982c0a64f0efc /ipc/shm.c | |
parent | 642fb4d1f1dd2417aa69189fe5ceb81e4fb72900 (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.c | 18 |
1 files changed, 13 insertions, 5 deletions
@@ -157,14 +157,22 @@ static void shm_close (struct vm_area_struct *shmd) | |||
157 | 157 | ||
158 | static int shm_mmap(struct file * file, struct vm_area_struct * vma) | 158 | static 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 | ||
166 | static struct file_operations shm_file_operations = { | 171 | static 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 | ||
170 | static struct vm_operations_struct shm_vm_ops = { | 178 | static struct vm_operations_struct shm_vm_ops = { |