Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
tools
perf
util
sysfs.c
Go to the documentation of this file.
1
2
#include "
util.h
"
3
#include "
sysfs.h
"
4
5
static
const
char
*
const
sysfs_known_mountpoints[] = {
6
"/sys"
,
7
0,
8
};
9
10
static
int
sysfs_found;
11
char
sysfs_mountpoint
[
PATH_MAX
];
12
13
static
int
sysfs_valid_mountpoint(
const
char
*sysfs)
14
{
15
struct
statfs
st_fs;
16
17
if
(
statfs
(sysfs, &st_fs) < 0)
18
return
-
ENOENT
;
19
else
if
(st_fs.
f_type
!= (
long
)
SYSFS_MAGIC
)
20
return
-
ENOENT
;
21
22
return
0;
23
}
24
25
const
char
*
sysfs_find_mountpoint
(
void
)
26
{
27
const
char
*
const
*
ptr
;
28
char
type
[100];
29
FILE *
fp
;
30
31
if
(sysfs_found)
32
return
(
const
char
*)
sysfs_mountpoint
;
33
34
ptr = sysfs_known_mountpoints;
35
while
(*ptr) {
36
if
(sysfs_valid_mountpoint(*ptr) == 0) {
37
sysfs_found = 1;
38
strcpy
(
sysfs_mountpoint
, *ptr);
39
return
sysfs_mountpoint
;
40
}
41
ptr++;
42
}
43
44
/* give up and parse /proc/mounts */
45
fp = fopen(
"/proc/mounts"
,
"r"
);
46
if
(fp ==
NULL
)
47
return
NULL
;
48
49
while
(!sysfs_found &&
50
fscanf(fp,
"%*s %"
STR
(
PATH_MAX
)
"s %99s %*s %*d %*d\n"
,
51
sysfs_mountpoint
, type) == 2) {
52
53
if
(
strcmp
(type,
"sysfs"
) == 0)
54
sysfs_found = 1;
55
}
56
57
fclose(fp);
58
59
return
sysfs_found ?
sysfs_mountpoint
:
NULL
;
60
}
Generated on Thu Jan 10 2013 13:13:58 for Linux Kernel by
1.8.2