add sigar_file_system_ping util
This commit is contained in:
		
							parent
							
								
									2ac98124c8
								
							
						
					
					
						commit
						6e51d8ac7b
					
				@ -458,6 +458,10 @@ sigar_file_system_usage_get(sigar_t *sigar,
 | 
			
		||||
                            const char *dirname,
 | 
			
		||||
                            sigar_file_system_usage_t *fsusage);
 | 
			
		||||
 | 
			
		||||
SIGAR_DECLARE(int)
 | 
			
		||||
sigar_file_system_ping(sigar_t *sigar,
 | 
			
		||||
                       sigar_file_system_t *fs);
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    enum {
 | 
			
		||||
        SIGAR_AF_UNSPEC,
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										40
									
								
								src/sigar.c
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								src/sigar.c
									
									
									
									
									
								
							@ -682,6 +682,46 @@ sigar_file_system_list_destroy(sigar_t *sigar,
 | 
			
		||||
    return SIGAR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef NFS_PROGRAM
 | 
			
		||||
#define NFS_PROGRAM 100003
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef NFS_VERSION
 | 
			
		||||
#define NFS_VERSION 2
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
SIGAR_DECLARE(int)
 | 
			
		||||
sigar_file_system_ping(sigar_t *sigar,
 | 
			
		||||
                       sigar_file_system_t *fs)
 | 
			
		||||
{
 | 
			
		||||
    int status = SIGAR_OK;
 | 
			
		||||
#ifndef WIN32
 | 
			
		||||
    char *ptr;
 | 
			
		||||
 | 
			
		||||
    if ((fs->type == SIGAR_FSTYPE_NETWORK) &&
 | 
			
		||||
        strEQ(fs->sys_type_name, "nfs") &&
 | 
			
		||||
        (ptr = strchr(fs->dev_name, ':')))
 | 
			
		||||
    {
 | 
			
		||||
        *ptr = '\0'; /* "hostname:/mount" -> "hostname" */
 | 
			
		||||
 | 
			
		||||
        status = sigar_rpc_ping(fs->dev_name,
 | 
			
		||||
                                SIGAR_NETCONN_UDP,
 | 
			
		||||
                                NFS_PROGRAM, NFS_VERSION);
 | 
			
		||||
 | 
			
		||||
        if (SIGAR_LOG_IS_DEBUG(sigar)) {
 | 
			
		||||
            sigar_log_printf(sigar, SIGAR_LOG_DEBUG,
 | 
			
		||||
                             "[fs_ping] %s -> %s: %s",
 | 
			
		||||
                             fs->dir_name, fs->dev_name,
 | 
			
		||||
                             ((status == SIGAR_OK) ?
 | 
			
		||||
                              "OK" : sigar_rpc_strerror(status)));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        *ptr = ':'; /* "hostname" -> "hostname:/mount" */
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
    return status;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int sigar_cpu_info_list_create(sigar_cpu_info_list_t *cpu_infos)
 | 
			
		||||
{
 | 
			
		||||
    cpu_infos->number = 0;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user