2007-10-04 Jakub Jelinek <jakub@redhat.com>

2007-10-03  Jakub Jelinek  <jakub@redhat.com>
This commit is contained in:
Ulrich Drepper 2007-10-05 20:32:30 +00:00
parent 8e351378b7
commit 6789aaaa97
7 changed files with 147 additions and 4 deletions

View File

@ -17,7 +17,7 @@
* sysdeps/unix/sysv/linux/sys/signalfd.h: New file.
* sysdeps/unix/sysv/linux/Versions: Export signalfd for GLIBC_2.7.
2007-10-04 Jakub Jelinek
2007-10-04 Jakub Jelinek <jakub@redhat.com>
* stdlib/msort.c: Include stdint.h.
(struct msort_param): New type.
@ -41,7 +41,7 @@
include <features.h> now. Include <bits/error.h> if possible.
* misc/bits/error.h: New file.
2007-10-03 Jakub Jelinek
2007-10-03 Jakub Jelinek <jakub@redhat.com>
* string/bits/string3.h (memcpy, memmove, mempcpy, memset, bcopy,
bzero, strcpy, stpcpy, strncpy, strcat, strncat): Use

View File

@ -13,7 +13,8 @@ endif
ifeq ($(subdir),misc)
sysdep_routines += sysctl clone llseek umount umount2 readahead \
setfsuid setfsgid makedev epoll_pwait signalfd
setfsuid setfsgid makedev epoll_pwait signalfd \
eventfd eventfd_read eventfd_write
CFLAGS-gethostid.c = -fexceptions

View File

@ -130,7 +130,7 @@ libc {
epoll_pwait; sync_file_range; sched_getcpu;
}
GLIBC_2.7 {
signalfd;
eventfd; eventfd_read; eventfd_write; signalfd;
}
GLIBC_PRIVATE {
# functions used in other libraries

View File

@ -0,0 +1,43 @@
/* Copyright (C) 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <errno.h>
#include <sys/eventfd.h>
#include <sysdep.h>
int
eventfd (int count, int flags)
{
/* The system call has no flag parameter which is bad. So we have
to wait until we have to support to pass additional values to the
kernel (sys_indirect) before implementing setting flags like
O_NONBLOCK etc. */
if (flags != 0)
{
__set_errno (EINVAL);
return -1;
}
#ifdef __NR_eventfd
return INLINE_SYSCALL (eventfd, 1, count);
#else
__set_errno (ENOSYS);
return -1;
#endif
}

View File

@ -0,0 +1,28 @@
/* Copyright (C) 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <errno.h>
#include <unistd.h>
#include <sys/eventfd.h>
int
eventfd_read (int fd, eventfd_t *value)
{
return read (fd, value, sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0;
}

View File

@ -0,0 +1,28 @@
/* Copyright (C) 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <errno.h>
#include <unistd.h>
#include <sys/eventfd.h>
int
eventfd_write (int fd, eventfd_t value)
{
return write (fd, &value, sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0;
}

View File

@ -0,0 +1,43 @@
/* Copyright (C) 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#ifndef _SYS_EVENTFD_H
#define _SYS_EVENTFD_H 1
#include <stdint.h>
/* Type for event counter. */
typedef uint64_t eventfd_t;
__BEGIN_DECLS
/* Return file descriptor for generic event channel. Set initial
value to COUNT. */
extern int eventfd (int __count, int __flags) __THROW;
/* Read event counter and possibly wait for events. */
extern int eventfd_read (int __fd, eventfd_t *__value);
/* Increment event counter. */
extern int eventfd_write (int __fd, eventfd_t value);
__END_DECLS
#endif /* sys/eventfd.h */