Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 105417
b: refs/heads/master
c: a0998b5
h: refs/heads/master
i:
  105415: 7b35926
v: v3
  • Loading branch information
Ulrich Drepper authored and Linus Torvalds committed Jul 24, 2008
1 parent 20fa25a commit 88f4727
Show file tree
Hide file tree
Showing 8 changed files with 22 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 11fcb6c14676023d0bd437841f5dcd670e7990a0
refs/heads/master: a0998b50c3f0b8fdd265c63e0032f86ebe377dbf
1 change: 1 addition & 0 deletions trunk/arch/x86/ia32/ia32entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -828,4 +828,5 @@ ia32_sys_call_table:
.quad compat_sys_timerfd_gettime
.quad compat_sys_signalfd4
.quad sys_eventfd2
.quad sys_epoll_create2
ia32_syscall_end:
1 change: 1 addition & 0 deletions trunk/arch/x86/kernel/syscall_table_32.S
Original file line number Diff line number Diff line change
Expand Up @@ -328,3 +328,4 @@ ENTRY(sys_call_table)
.long sys_timerfd_gettime
.long sys_signalfd4
.long sys_eventfd2
.long sys_epoll_create2
13 changes: 11 additions & 2 deletions trunk/fs/eventpoll.c
Original file line number Diff line number Diff line change
Expand Up @@ -1046,11 +1046,14 @@ static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events,
* RB tree. With the current implementation, the "size" parameter is ignored
* (besides sanity checks).
*/
asmlinkage long sys_epoll_create(int size)
asmlinkage long sys_epoll_create2(int size, int flags)
{
int error, fd = -1;
struct eventpoll *ep;

if (flags & ~EPOLL_CLOEXEC)
return -EINVAL;

DNPRINTK(3, (KERN_INFO "[%p] eventpoll: sys_epoll_create(%d)\n",
current, size));

Expand All @@ -1068,7 +1071,8 @@ asmlinkage long sys_epoll_create(int size)
* Creates all the items needed to setup an eventpoll file. That is,
* a file structure and a free file descriptor.
*/
fd = anon_inode_getfd("[eventpoll]", &eventpoll_fops, ep, 0);
fd = anon_inode_getfd("[eventpoll]", &eventpoll_fops, ep,
flags & O_CLOEXEC);
if (fd < 0)
ep_free(ep);

Expand All @@ -1079,6 +1083,11 @@ asmlinkage long sys_epoll_create(int size)
return fd;
}

asmlinkage long sys_epoll_create(int size)
{
return sys_epoll_create2(size, 0);
}

/*
* The following function implements the controller interface for
* the eventpoll file that enables the insertion/removal/change of
Expand Down
1 change: 1 addition & 0 deletions trunk/include/asm-x86/unistd_32.h
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@
#define __NR_timerfd_gettime 326
#define __NR_signalfd4 327
#define __NR_eventfd2 328
#define __NR_epoll_create2 329

#ifdef __KERNEL__

Expand Down
2 changes: 2 additions & 0 deletions trunk/include/asm-x86/unistd_64.h
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,8 @@ __SYSCALL(__NR_paccept, sys_paccept)
__SYSCALL(__NR_signalfd4, sys_signalfd4)
#define __NR_eventfd2 290
__SYSCALL(__NR_eventfd2, sys_eventfd2)
#define __NR_epoll_create2 291
__SYSCALL(__NR_epoll_create2, sys_epoll_create2)


#ifndef __NO_STUBS
Expand Down
4 changes: 4 additions & 0 deletions trunk/include/linux/eventpoll.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@
#ifndef _LINUX_EVENTPOLL_H
#define _LINUX_EVENTPOLL_H

/* For O_CLOEXEC */
#include <linux/fcntl.h>
#include <linux/types.h>

/* Flags for epoll_create2. */
#define EPOLL_CLOEXEC O_CLOEXEC

/* Valid opcodes to issue to sys_epoll_ctl() */
#define EPOLL_CTL_ADD 1
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/syscalls.h
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,7 @@ asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds,
asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp,
fd_set __user *exp, struct timeval __user *tvp);
asmlinkage long sys_epoll_create(int size);
asmlinkage long sys_epoll_create2(int size, int flags);
asmlinkage long sys_epoll_ctl(int epfd, int op, int fd,
struct epoll_event __user *event);
asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events,
Expand Down

0 comments on commit 88f4727

Please sign in to comment.