Messages in this thread Patch in this message | | | From | Davide Libenzi <> | Date | Wed, 06 Jun 2007 15:30:31 -0700 | Subject | [patch 3/8] fdmap v2 - implement sys_nonseqfd |
| |
This patch implement a new syscall sys_nonseqfd():
int nonseqfd(int fd, int flags);
The sys_nonseqfd() syscall can be used to map an existing file descriptor inside the non-sequential fd area.
Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
- Davide
Index: linux-2.6.mod/fs/fcntl.c =================================================================== --- linux-2.6.mod.orig/fs/fcntl.c 2007-06-06 12:48:03.000000000 -0700 +++ linux-2.6.mod/fs/fcntl.c 2007-06-06 12:48:35.000000000 -0700 @@ -81,6 +81,25 @@ return fd; } +asmlinkage long sys_nonseqfd(unsigned int fd, unsigned int flags) +{ + struct files_struct *files = current->files; + int nfd = -EBADF; + struct file *file; + + spin_lock(&files->file_lock); + if (!(file = fcheck(fd))) + goto out_unlock; + nfd = __alloc_nonseq_fd(files, flags); + if (likely(nfd >= 0)) + get_file(file); +out_unlock: + spin_unlock(&files->file_lock); + if (likely(nfd >= 0)) + fd_install(nfd, file); + return nfd; +} + static int dupfd(struct file *file, unsigned int start) { struct files_struct *files = current->files; Index: linux-2.6.mod/include/linux/syscalls.h =================================================================== --- linux-2.6.mod.orig/include/linux/syscalls.h 2007-06-06 12:38:27.000000000 -0700 +++ linux-2.6.mod/include/linux/syscalls.h 2007-06-06 12:48:35.000000000 -0700 @@ -302,6 +302,7 @@ asmlinkage long sys_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg); #endif +asmlinkage long sys_nonseqfd(unsigned int fd, unsigned int flags); asmlinkage long sys_dup(unsigned int fildes); asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd); asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int on); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |