25 #include <arpa/inet.h> 29 #include <sys/resource.h> 33 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_LIB 38 return strtoull(str, endptr,
base);
44 return strtoul(str, endptr,
base);
53 struct in_addr ipaddr;
55 if (inet_aton(
name, &ipaddr) == 0) {
61 rc = gethostbyname_r(
name, &he, he_buf,
sizeof he_buf,
65 for (
i = 0; hp->h_addr_list[
i] !=
NULL; ++
i)
67 if (hp->h_addrtype == AF_INET &&
68 hp->h_length ==
sizeof(ipaddr))
70 if (hp->h_addr_list[
i] ==
NULL)
71 return M0_ERR(-EPFNOSUPPORT);
72 if (inet_ntop(hp->h_addrtype, hp->h_addr,
buf, bufsiz) ==
NULL)
74 }
else if (strlen(
name) >= bufsiz) {
89 char proc_io_buf[0x1000];
90 unsigned long long rchar;
91 unsigned long long wchar;
92 unsigned long long syscr;
93 unsigned long long syscw;
94 unsigned long long read_bytes;
95 unsigned long long write_bytes;
96 unsigned long long cancelled_write_bytes;
98 rc = getrusage(RUSAGE_SELF, &
usage);
100 len = snprintf(
buf, buf_len,
"utime %ld.%06ld stime %ld.%06ld " 101 "maxrss %ld nvcsw %ld nivcsw %ld\n" 102 "minflt %ld majflt %ld " 103 "inblock %ld oublock %ld\n",
104 usage.ru_utime.tv_sec,
usage.ru_utime.tv_usec,
105 usage.ru_stime.tv_sec,
usage.ru_stime.tv_usec,
109 if (len >= buf_len || len < 0)
116 proc_self_io = fopen(
"/proc/self/io",
"r");
117 if (proc_self_io !=
NULL) {
118 nr = fscanf(proc_self_io,
"%s %llu %s %llu %s %llu %s %llu " 119 "%s %llu %s %llu %s %llu",
120 proc_io_buf, &rchar, proc_io_buf, &wchar,
121 proc_io_buf, &syscr, proc_io_buf, &syscw,
122 proc_io_buf, &read_bytes, proc_io_buf,
123 &write_bytes, proc_io_buf, &cancelled_write_bytes);
124 fclose(proc_self_io);
126 snprintf(
buf, buf_len,
"rchar %llu wchar %llu " 127 "syscr %llu syscw %llu\n" 128 "read_bytes %llu write_bytes %llu " 129 "cancelled_write_bytes %llu\n",
130 rchar, wchar, syscr, syscw,
131 read_bytes, write_bytes,
132 cancelled_write_bytes);
137 #undef M0_TRACE_SUBSYSTEM
uint32_t m0_strtou32(const char *str, char **endptr, int base)
uint64_t m0_strtou64(const char *str, char **endptr, int base)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL void m0_performance_counters(char *buf, size_t buf_len)
M0_INTERNAL int m0_host_resolve(const char *name, char *buf, size_t bufsiz)