mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
* sysdeps/unix/sysv/linux/ia64/bits/shm.h (shmatt_t): New type.
(struct shmid_ds): Use it for shm_nattch field. 2005-11-18 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/futimesat.c (futimesat): If FILE is NULL, set access and modification times of the file referenced by FD. * sysdeps/generic/futimesat.c (futimesat): Don't return EINVAL if FILE is NULL. Don't check FD if FILE is absolute path. 2005-11-19 Ulrich Drepper <drepper@redhat.com> * nscd/nscd_gethst_r.c (nscd_gethst_r): Avoid unnecesary read call if there are no aliases. * sysdeps/unix/sysv/linux/Makefile (CFLAGS-connections.c, CFLAGS-pwdcache.c, CFLAGS-grpcache.c, CFLAGS-hstcache.c, CFLAGS-aicache.c, CFLAGS-initgrcache.c): Add -DHAVE_SENDFILE. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_SENDFILE): Define. * nscd/pwdcache.c [HAVE_SENDFILE]: Include <sys/sendfile.h> and <kernel-features.h>. [HAVE_SENDFILE] (cache_addpw): Use sendfile to transmit positive result. * nscd/grpcache.c: Likewise. * nscd/hstcache.c: Likewise. * nscd/aicache.c: Likewise. * nscd/initgrcache.c: Likewise. * nscd/connectionc.c: Likewise.
This commit is contained in:
parent
74ac0a89d2
commit
eac1079146
32
ChangeLog
32
ChangeLog
@ -1,3 +1,35 @@
|
|||||||
|
2005-11-19 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/ia64/bits/shm.h (shmatt_t): New type.
|
||||||
|
(struct shmid_ds): Use it for shm_nattch field.
|
||||||
|
|
||||||
|
2005-11-18 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/futimesat.c (futimesat): If FILE is NULL,
|
||||||
|
set access and modification times of the file referenced by FD.
|
||||||
|
* sysdeps/generic/futimesat.c (futimesat): Don't return EINVAL if
|
||||||
|
FILE is NULL. Don't check FD if FILE is absolute path.
|
||||||
|
|
||||||
|
2005-11-19 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* nscd/nscd_gethst_r.c (nscd_gethst_r): Avoid unnecesary read call
|
||||||
|
if there are no aliases.
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/Makefile (CFLAGS-connections.c,
|
||||||
|
CFLAGS-pwdcache.c, CFLAGS-grpcache.c, CFLAGS-hstcache.c,
|
||||||
|
CFLAGS-aicache.c, CFLAGS-initgrcache.c): Add -DHAVE_SENDFILE.
|
||||||
|
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_SENDFILE):
|
||||||
|
Define.
|
||||||
|
* nscd/pwdcache.c [HAVE_SENDFILE]: Include <sys/sendfile.h> and
|
||||||
|
<kernel-features.h>.
|
||||||
|
[HAVE_SENDFILE] (cache_addpw): Use sendfile to transmit positive
|
||||||
|
result.
|
||||||
|
* nscd/grpcache.c: Likewise.
|
||||||
|
* nscd/hstcache.c: Likewise.
|
||||||
|
* nscd/aicache.c: Likewise.
|
||||||
|
* nscd/initgrcache.c: Likewise.
|
||||||
|
* nscd/connectionc.c: Likewise.
|
||||||
|
|
||||||
2005-11-18 Andreas Schwab <schwab@suse.de>
|
2005-11-18 Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Remove useless alias.
|
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Remove useless alias.
|
||||||
|
@ -26,8 +26,15 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <dbg_log.h>
|
#ifdef HAVE_SENDFILE
|
||||||
#include <nscd.h>
|
# include <sys/sendfile.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "dbg_log.h"
|
||||||
|
#include "nscd.h"
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <kernel-features.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
typedef enum nss_status (*nss_gethostbyname3_r)
|
typedef enum nss_status (*nss_gethostbyname3_r)
|
||||||
@ -365,7 +372,30 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
|
|||||||
wait. */
|
wait. */
|
||||||
assert (fd != -1);
|
assert (fd != -1);
|
||||||
|
|
||||||
writeall (fd, &dataset->resp, total);
|
#ifdef HAVE_SENDFILE
|
||||||
|
if (__builtin_expect (db->mmap_used, 1))
|
||||||
|
{
|
||||||
|
assert (db->wr_fd != -1);
|
||||||
|
assert ((char *) &dataset->resp > (char *) db->data);
|
||||||
|
assert ((char *) &dataset->resp - (char *) db->head
|
||||||
|
+ total
|
||||||
|
<= (sizeof (struct database_pers_head)
|
||||||
|
+ db->head->module * sizeof (ref_t)
|
||||||
|
+ db->head->data_size));
|
||||||
|
off_t off = (char *) &dataset->resp - (char *) db->head;
|
||||||
|
ssize_t written;
|
||||||
|
written = sendfile (fd, db->wr_fd, &off, total);
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
if (written == -1 && errno == ENOSYS)
|
||||||
|
goto use_write;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
use_write:
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
writeall (fd, &dataset->resp, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -39,6 +39,9 @@
|
|||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/poll.h>
|
#include <sys/poll.h>
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <sys/sendfile.h>
|
||||||
|
#endif
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/un.h>
|
#include <sys/un.h>
|
||||||
@ -46,6 +49,9 @@
|
|||||||
#include "nscd.h"
|
#include "nscd.h"
|
||||||
#include "dbg_log.h"
|
#include "dbg_log.h"
|
||||||
#include "selinux.h"
|
#include "selinux.h"
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <kernel-features.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Wrapper functions with error checking for standard functions. */
|
/* Wrapper functions with error checking for standard functions. */
|
||||||
@ -939,8 +945,33 @@ cannot handle old request version %d; current version is %d"),
|
|||||||
if (cached != NULL)
|
if (cached != NULL)
|
||||||
{
|
{
|
||||||
/* Hurray it's in the cache. */
|
/* Hurray it's in the cache. */
|
||||||
if (writeall (fd, cached->data, cached->recsize)
|
ssize_t nwritten;
|
||||||
!= cached->recsize
|
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
if (db->mmap_used || !cached->notfound)
|
||||||
|
{
|
||||||
|
assert (db->wr_fd != -1);
|
||||||
|
assert ((char *) cached->data > (char *) db->data);
|
||||||
|
assert ((char *) cached->data - (char *) db->head
|
||||||
|
+ cached->recsize
|
||||||
|
<= (sizeof (struct database_pers_head)
|
||||||
|
+ db->head->module * sizeof (ref_t)
|
||||||
|
+ db->head->data_size));
|
||||||
|
off_t off = (char *) cached->data - (char *) db->head;
|
||||||
|
nwritten = sendfile (fd, db->wr_fd, &off, cached->recsize);
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
if (nwritten == -1 && errno == ENOSYS)
|
||||||
|
goto use_write;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
use_write:
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
nwritten = writeall (fd, cached->data, cached->recsize);
|
||||||
|
|
||||||
|
if (nwritten != cached->recsize
|
||||||
&& __builtin_expect (debug_level, 0) > 0)
|
&& __builtin_expect (debug_level, 0) > 0)
|
||||||
{
|
{
|
||||||
/* We have problems sending the result. */
|
/* We have problems sending the result. */
|
||||||
|
@ -32,11 +32,17 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <sys/sendfile.h>
|
||||||
|
#endif
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <stackinfo.h>
|
#include <stackinfo.h>
|
||||||
|
|
||||||
#include "nscd.h"
|
#include "nscd.h"
|
||||||
#include "dbg_log.h"
|
#include "dbg_log.h"
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <kernel-features.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* This is the standard reply in case the service is disabled. */
|
/* This is the standard reply in case the service is disabled. */
|
||||||
static const gr_response_header disabled =
|
static const gr_response_header disabled =
|
||||||
@ -294,7 +300,29 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
|
|||||||
unnecessarily let the receiver wait. */
|
unnecessarily let the receiver wait. */
|
||||||
assert (fd != -1);
|
assert (fd != -1);
|
||||||
|
|
||||||
written = writeall (fd, &dataset->resp, total);
|
#ifdef HAVE_SENDFILE
|
||||||
|
if (__builtin_expect (db->mmap_used, 1))
|
||||||
|
{
|
||||||
|
assert (db->wr_fd != -1);
|
||||||
|
assert ((char *) &dataset->resp > (char *) db->data);
|
||||||
|
assert ((char *) &dataset->resp - (char *) db->head
|
||||||
|
+ total
|
||||||
|
<= (sizeof (struct database_pers_head)
|
||||||
|
+ db->head->module * sizeof (ref_t)
|
||||||
|
+ db->head->data_size));
|
||||||
|
off_t off = (char *) &dataset->resp - (char *) db->head;
|
||||||
|
written = sendfile (fd, db->wr_fd, &off, total);
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
if (written == -1 && errno == ENOSYS)
|
||||||
|
goto use_write;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
use_write:
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
written = writeall (fd, &dataset->resp, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add the record to the database. But only if it has not been
|
/* Add the record to the database. But only if it has not been
|
||||||
|
@ -34,10 +34,16 @@
|
|||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <arpa/nameser.h>
|
#include <arpa/nameser.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <sys/sendfile.h>
|
||||||
|
#endif
|
||||||
#include <stackinfo.h>
|
#include <stackinfo.h>
|
||||||
|
|
||||||
#include "nscd.h"
|
#include "nscd.h"
|
||||||
#include "dbg_log.h"
|
#include "dbg_log.h"
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <kernel-features.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* This is the standard reply in case the service is disabled. */
|
/* This is the standard reply in case the service is disabled. */
|
||||||
@ -328,7 +334,29 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
|
|||||||
unnecessarily keep the receiver waiting. */
|
unnecessarily keep the receiver waiting. */
|
||||||
assert (fd != -1);
|
assert (fd != -1);
|
||||||
|
|
||||||
written = writeall (fd, &dataset->resp, total);
|
#ifdef HAVE_SENDFILE
|
||||||
|
if (__builtin_expect (db->mmap_used, 1))
|
||||||
|
{
|
||||||
|
assert (db->wr_fd != -1);
|
||||||
|
assert ((char *) &dataset->resp > (char *) db->data);
|
||||||
|
assert ((char *) &dataset->resp - (char *) db->head
|
||||||
|
+ total
|
||||||
|
<= (sizeof (struct database_pers_head)
|
||||||
|
+ db->head->module * sizeof (ref_t)
|
||||||
|
+ db->head->data_size));
|
||||||
|
off_t off = (char *) &dataset->resp - (char *) db->head;
|
||||||
|
written = sendfile (fd, db->wr_fd, &off, total);
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
if (written == -1 && errno == ENOSYS)
|
||||||
|
goto use_write;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
use_write:
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
written = writeall (fd, &dataset->resp, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add the record to the database. But only if it has not been
|
/* Add the record to the database. But only if it has not been
|
||||||
|
@ -26,8 +26,15 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <dbg_log.h>
|
#ifdef HAVE_SENDFILE
|
||||||
#include <nscd.h>
|
# include <sys/sendfile.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "dbg_log.h"
|
||||||
|
#include "nscd.h"
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <kernel-features.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../nss/nsswitch.h"
|
#include "../nss/nsswitch.h"
|
||||||
|
|
||||||
@ -344,7 +351,29 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
|
|||||||
unnecessarily let the receiver wait. */
|
unnecessarily let the receiver wait. */
|
||||||
assert (fd != -1);
|
assert (fd != -1);
|
||||||
|
|
||||||
written = writeall (fd, &dataset->resp, total);
|
#ifdef HAVE_SENDFILE
|
||||||
|
if (__builtin_expect (db->mmap_used, 1))
|
||||||
|
{
|
||||||
|
assert (db->wr_fd != -1);
|
||||||
|
assert ((char *) &dataset->resp > (char *) db->data);
|
||||||
|
assert ((char *) &dataset->resp - (char *) db->head
|
||||||
|
+ total
|
||||||
|
<= (sizeof (struct database_pers_head)
|
||||||
|
+ db->head->module * sizeof (ref_t)
|
||||||
|
+ db->head->data_size));
|
||||||
|
off_t off = (char *) &dataset->resp - (char *) db->head;
|
||||||
|
written = sendfile (fd, db->wr_fd, &off, total);
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
if (written == -1 && errno == ENOSYS)
|
||||||
|
goto use_write;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
use_write:
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
written = writeall (fd, &dataset->resp, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,11 +32,17 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <sys/sendfile.h>
|
||||||
|
#endif
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <stackinfo.h>
|
#include <stackinfo.h>
|
||||||
|
|
||||||
#include "nscd.h"
|
#include "nscd.h"
|
||||||
#include "dbg_log.h"
|
#include "dbg_log.h"
|
||||||
|
#ifdef HAVE_SENDFILE
|
||||||
|
# include <kernel-features.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* This is the standard reply in case the service is disabled. */
|
/* This is the standard reply in case the service is disabled. */
|
||||||
static const pw_response_header disabled =
|
static const pw_response_header disabled =
|
||||||
@ -289,7 +295,29 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
|
|||||||
unnecessarily let the receiver wait. */
|
unnecessarily let the receiver wait. */
|
||||||
assert (fd != -1);
|
assert (fd != -1);
|
||||||
|
|
||||||
written = writeall (fd, &dataset->resp, total);
|
#ifdef HAVE_SENDFILE
|
||||||
|
if (__builtin_expect (db->mmap_used, 1))
|
||||||
|
{
|
||||||
|
assert (db->wr_fd != -1);
|
||||||
|
assert ((char *) &dataset->resp > (char *) db->data);
|
||||||
|
assert ((char *) &dataset->resp - (char *) db->head
|
||||||
|
+ total
|
||||||
|
<= (sizeof (struct database_pers_head)
|
||||||
|
+ db->head->module * sizeof (ref_t)
|
||||||
|
+ db->head->data_size));
|
||||||
|
off_t off = (char *) &dataset->resp - (char *) db->head;
|
||||||
|
written = sendfile (fd, db->wr_fd, &off, total);
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
if (written == -1 && errno == ENOSYS)
|
||||||
|
goto use_write;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
# ifndef __ASSUME_SENDFILE
|
||||||
|
use_write:
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
written = writeall (fd, &dataset->resp, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,18 +30,14 @@ futimesat (fd, file, tvp)
|
|||||||
const char *file;
|
const char *file;
|
||||||
const struct timeval tvp[2];
|
const struct timeval tvp[2];
|
||||||
{
|
{
|
||||||
if (fd < 0 && fd != AT_FDCWD)
|
if (fd < 0
|
||||||
|
&& (file == NULL
|
||||||
|
|| (fd != AT_FDCWD && file[0] != '/')))
|
||||||
{
|
{
|
||||||
__set_errno (EBADF);
|
__set_errno (EBADF);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file == NULL)
|
|
||||||
{
|
|
||||||
__set_errno (EINVAL);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
__set_errno (ENOSYS);
|
__set_errno (ENOSYS);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -152,6 +152,11 @@ CFLAGS-mq_receive.c += -fexceptions
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(subdir),nscd)
|
ifeq ($(subdir),nscd)
|
||||||
CFLAGS-connections.c += -DHAVE_EPOLL
|
CFLAGS-connections.c += -DHAVE_EPOLL -DHAVE_SENDFILE
|
||||||
|
CFLAGS-pwdcache.c += -DHAVE_SENDFILE
|
||||||
|
CFLAGS-grpcache.c += -DHAVE_SENDFILE
|
||||||
|
CFLAGS-hstcache.c += -DHAVE_SENDFILE
|
||||||
|
CFLAGS-aicache.c += -DHAVE_SENDFILE
|
||||||
|
CFLAGS-initgrcache.c += -DHAVE_SENDFILE
|
||||||
CFLAGS-gai.c += -DNEED_NETLINK
|
CFLAGS-gai.c += -DNEED_NETLINK
|
||||||
endif
|
endif
|
||||||
|
@ -37,7 +37,22 @@ futimesat (fd, file, tvp)
|
|||||||
{
|
{
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
|
|
||||||
if (fd != AT_FDCWD && file[0] != '/')
|
if (file == NULL)
|
||||||
|
{
|
||||||
|
static const char procfd[] = "/proc/self/fd/%d";
|
||||||
|
/* Buffer for the path name we are going to use. It consists of
|
||||||
|
- the string /proc/self/fd/
|
||||||
|
- the file descriptor number.
|
||||||
|
The final NUL is included in the sizeof. A bit of overhead
|
||||||
|
due to the format elements compensates for possible negative
|
||||||
|
numbers. */
|
||||||
|
size_t buflen = sizeof (procfd) + sizeof (int) * 3;
|
||||||
|
buf = alloca (buflen);
|
||||||
|
|
||||||
|
__snprintf (buf, buflen, procfd, fd);
|
||||||
|
file = buf;
|
||||||
|
}
|
||||||
|
else if (fd != AT_FDCWD && file[0] != '/')
|
||||||
{
|
{
|
||||||
size_t filelen = strlen (file);
|
size_t filelen = strlen (file);
|
||||||
static const char procfd[] = "/proc/self/fd/%d/%s";
|
static const char procfd[] = "/proc/self/fd/%d/%s";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
|
/* Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -38,6 +38,8 @@
|
|||||||
/* Segment low boundary address multiple. */
|
/* Segment low boundary address multiple. */
|
||||||
#define SHMLBA (1024 * 1024)
|
#define SHMLBA (1024 * 1024)
|
||||||
|
|
||||||
|
/* Type to count number of attaches. */
|
||||||
|
typedef unsigned long int shmatt_t;
|
||||||
|
|
||||||
/* Data structure describing a set of semaphores. */
|
/* Data structure describing a set of semaphores. */
|
||||||
struct shmid_ds
|
struct shmid_ds
|
||||||
@ -49,7 +51,7 @@ struct shmid_ds
|
|||||||
__time_t shm_ctime; /* time of last change by shmctl() */
|
__time_t shm_ctime; /* time of last change by shmctl() */
|
||||||
__pid_t shm_cpid; /* pid of creator */
|
__pid_t shm_cpid; /* pid of creator */
|
||||||
__pid_t shm_lpid; /* pid of last shmop */
|
__pid_t shm_lpid; /* pid of last shmop */
|
||||||
unsigned long int shm_nattch; /* number of current attaches */
|
shmatt_t shm_nattch; /* number of current attaches */
|
||||||
unsigned long int __unused1;
|
unsigned long int __unused1;
|
||||||
unsigned long int __unused2;
|
unsigned long int __unused2;
|
||||||
};
|
};
|
||||||
|
@ -84,6 +84,11 @@
|
|||||||
# define __ASSUME_MSG_NOSIGNAL 1
|
# define __ASSUME_MSG_NOSIGNAL 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* The sendfile syscall was introduced in 2.2.0. */
|
||||||
|
#if __LINUX_KERNEL_VERSION >= 131584
|
||||||
|
# define __ASSUME_SENDFILE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
/* On x86 another `getrlimit' syscall was added in 2.3.25. */
|
/* On x86 another `getrlimit' syscall was added in 2.3.25. */
|
||||||
#if __LINUX_KERNEL_VERSION >= 131865 && defined __i386__
|
#if __LINUX_KERNEL_VERSION >= 131865 && defined __i386__
|
||||||
# define __ASSUME_NEW_GETRLIMIT_SYSCALL 1
|
# define __ASSUME_NEW_GETRLIMIT_SYSCALL 1
|
||||||
|
Loading…
Reference in New Issue
Block a user