Add Changelog ...
[jlayton/glibc.git] / sysdeps / unix / sysv / linux / alpha / getsysstats.c
1 /* Determine various system internal values, Linux/Alpha version.
2    Copyright (C) 1999 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4    Contributed by Andreas Schwab <schwab@suse.de>
5
6    The GNU C Library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public
8    License as published by the Free Software Foundation; either
9    version 2.1 of the License, or (at your option) any later version.
10
11    The GNU C Library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
15
16    You should have received a copy of the GNU Lesser General Public
17    License along with the GNU C Library.  If not, see
18    <http://www.gnu.org/licenses/>.  */
19
20
21 /* We need to define a special parser for /proc/cpuinfo.  */
22 #define GET_NPROCS_PARSER(FD, BUFFER, CP, RE, BUFFER_END, RESULT)          \
23   do                                                                       \
24     {                                                                      \
25       /* Find the line that contains the information about the number of   \
26          active cpus.  We don't have to fear extremely long lines since    \
27          the kernel will not generate them.  8192 bytes are really enough. \
28          If there is no "CPUs ..." line then we are on a UP system.  */    \
29       char *l;                                                             \
30       (RESULT) = 1;                                                        \
31       while ((l = next_line (FD, BUFFER, &CP, &RE, BUFFER_END)) != NULL)  \
32         if ((sscanf (BUFFER, "cpus active : %d", &(RESULT)) == 1)          \
33             || (sscanf (BUFFER, "CPUs probed %*d active %d",               \
34                         &(RESULT)) == 1))                                  \
35           break;                                                           \
36     }                                                                      \
37   while (0)
38
39
40 /* On the Alpha we can distinguish between the number of configured and
41    active cpus.  */
42 #define GET_NPROCS_CONF_PARSER(FP, BUFFER, RESULT)                         \
43   do                                                                       \
44     {                                                                      \
45       /* Find the line that contains the information about the number of   \
46          probed cpus.  We don't have to fear extremely long lines since    \
47          the kernel will not generate them.  8192 bytes are really enough. \
48          If there is no "CPUs ..." line then we are on a UP system.  */    \
49       (RESULT) = 1;                                                        \
50       while (fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL)     \
51         if ((sscanf (buffer, "cpus detected : %d", &(RESULT)) == 1)        \
52             || (sscanf (buffer, "CPUs probed %d", &(RESULT)) == 1))        \
53           break;                                                           \
54     }                                                                      \
55   while (0)
56
57 #include <sysdeps/unix/sysv/linux/getsysstats.c>