8
8
#include <inttypes.h>
9
9
#include <fcntl.h>
10
10
11
- static void parseDiskIOCounters (int dfd , const char * devName , FFlist * result , FFDiskIOOptions * options )
11
+ static const char * parseDiskIOCounters (int dfd , const char * devName , FFlist * result , FFDiskIOOptions * options )
12
12
{
13
13
FF_AUTO_CLOSE_FD int devfd = openat (dfd , "device" , O_RDONLY | O_CLOEXEC | O_PATH | O_DIRECTORY );
14
- if (devfd < 0 ) return ; // virtual device
14
+ if (devfd < 0 ) return " virtual device" ;
15
15
16
16
FF_STRBUF_AUTO_DESTROY name = ffStrbufCreate ();
17
17
@@ -49,18 +49,18 @@ static void parseDiskIOCounters(int dfd, const char* devName, FFlist* result, FF
49
49
}
50
50
51
51
if (options -> namePrefix .length && !ffStrbufStartsWith (& name , & options -> namePrefix ))
52
- return ;
52
+ return "ignored" ;
53
53
}
54
54
55
55
// I/Os merges sectors ticks ...
56
56
uint64_t nRead , sectorRead , nWritten , sectorWritten ;
57
57
{
58
58
char sysBlockStat [PROC_FILE_BUFFSIZ ];
59
59
ssize_t fileSize = ffReadFileDataRelative (dfd , "stat" , ARRAY_SIZE (sysBlockStat ) - 1 , sysBlockStat );
60
- if (fileSize <= 0 ) return ;
60
+ if (fileSize <= 0 ) return "failed to read stat file" ;
61
61
sysBlockStat [fileSize ] = '\0' ;
62
62
if (sscanf (sysBlockStat , "%" PRIu64 "%*u%" PRIu64 "%*u%" PRIu64 "%*u%" PRIu64 "%*u" , & nRead , & sectorRead , & nWritten , & sectorWritten ) <= 0 )
63
- return ;
63
+ return "invalid stat file format" ;
64
64
}
65
65
66
66
FFDiskIOResult * device = (FFDiskIOResult * ) ffListAdd (result );
@@ -70,6 +70,8 @@ static void parseDiskIOCounters(int dfd, const char* devName, FFlist* result, FF
70
70
device -> bytesWritten = sectorWritten * 512 ;
71
71
device -> readCount = nRead ;
72
72
device -> writeCount = nWritten ;
73
+
74
+ return NULL ;
73
75
}
74
76
75
77
const char * ffDiskIOGetIoCounters (FFlist * result , FFDiskIOOptions * options )
@@ -83,7 +85,7 @@ const char* ffDiskIOGetIoCounters(FFlist* result, FFDiskIOOptions* options)
83
85
{
84
86
const char * const devName = sysBlockEntry -> d_name ;
85
87
86
- if (devName [0 ] == '.' ) continue ;;
88
+ if (devName [0 ] == '.' ) continue ;
87
89
88
90
FF_AUTO_CLOSE_FD int dfd = openat (dirfd (sysBlockDirp ), devName , O_RDONLY | O_CLOEXEC | O_PATH | O_DIRECTORY );
89
91
if (dfd > 0 ) parseDiskIOCounters (dfd , devName , result , options );
0 commit comments