mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 19:30:10 +00:00
Update.
2004-03-28 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Handle _SC_SIGQUEUE_MAX.
This commit is contained in:
parent
eec8b6cae5
commit
3bd1aa475d
@ -1,3 +1,8 @@
|
||||
2004-03-28 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Handle
|
||||
_SC_SIGQUEUE_MAX.
|
||||
|
||||
2004-03-26 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* elf/dl-caller.c: New file.
|
||||
|
@ -32,6 +32,8 @@ static long int posix_sysconf (int name);
|
||||
long int
|
||||
__sysconf (int name)
|
||||
{
|
||||
const char *procfname = NULL;
|
||||
|
||||
switch (name)
|
||||
{
|
||||
#ifdef __NR_clock_getres
|
||||
@ -47,37 +49,44 @@ __sysconf (int name)
|
||||
#endif
|
||||
|
||||
case _SC_NGROUPS_MAX:
|
||||
{
|
||||
/* Try to read the information from the /proc/sys/kernel/ngroups_max
|
||||
file. */
|
||||
int fd = open_not_cancel_2 ("/proc/sys/kernel/ngroups_max", O_RDONLY);
|
||||
if (fd != -1)
|
||||
{
|
||||
/* This is more than enough, the file contains a single
|
||||
integer. */
|
||||
char buf[32];
|
||||
ssize_t n;
|
||||
n = TEMP_FAILURE_RETRY (read_not_cancel (fd, buf,
|
||||
sizeof (buf) - 1));
|
||||
close_not_cancel_no_status (fd);
|
||||
/* Try to read the information from the /proc/sys/kernel/ngroups_max
|
||||
file. */
|
||||
procfname = "/proc/sys/kernel/ngroups_max";
|
||||
break;
|
||||
|
||||
if (n > 0)
|
||||
{
|
||||
/* Terminate the string. */
|
||||
buf[n] = '\0';
|
||||
|
||||
char *endp;
|
||||
long int res = strtol (buf, &endp, 10);
|
||||
if (endp != buf && (*endp == '\0' || *endp == '\n'))
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
case _SC_SIGQUEUE_MAX:
|
||||
/* The /proc/sys/kernel/rtsig-max file contains the answer. */
|
||||
procfname = "/proc/sys/kernel/rtsig-max";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (procfname != NULL)
|
||||
{
|
||||
int fd = open_not_cancel_2 (procfname, O_RDONLY);
|
||||
if (fd != -1)
|
||||
{
|
||||
/* This is more than enough, the file contains a single integer. */
|
||||
char buf[32];
|
||||
ssize_t n;
|
||||
n = TEMP_FAILURE_RETRY (read_not_cancel (fd, buf, sizeof (buf) - 1));
|
||||
close_not_cancel_no_status (fd);
|
||||
|
||||
if (n > 0)
|
||||
{
|
||||
/* Terminate the string. */
|
||||
buf[n] = '\0';
|
||||
|
||||
char *endp;
|
||||
long int res = strtol (buf, &endp, 10);
|
||||
if (endp != buf && (*endp == '\0' || *endp == '\n'))
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return posix_sysconf (name);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user