mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 16:21:06 +00:00
2007-10-04 Jakub Jelinek <jakub@redhat.com>
2007-10-03 Jakub Jelinek <jakub@redhat.com>
This commit is contained in:
parent
8e351378b7
commit
6789aaaa97
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
43
sysdeps/unix/sysv/linux/eventfd.c
Normal file
43
sysdeps/unix/sysv/linux/eventfd.c
Normal 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
|
||||
}
|
28
sysdeps/unix/sysv/linux/eventfd_read.c
Normal file
28
sysdeps/unix/sysv/linux/eventfd_read.c
Normal 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;
|
||||
}
|
28
sysdeps/unix/sysv/linux/eventfd_write.c
Normal file
28
sysdeps/unix/sysv/linux/eventfd_write.c
Normal 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;
|
||||
}
|
43
sysdeps/unix/sysv/linux/sys/eventfd.h
Normal file
43
sysdeps/unix/sysv/linux/sys/eventfd.h
Normal 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 */
|
Loading…
Reference in New Issue
Block a user