16{
18#ifndef __APPLE__
19
20 const char *
filename =
"/proc/self/statm";
21 FILE*
fd = fopen(filename,
"r");
22 if (0==fd) {
23 char errbuf[1024];
24 strerror_r (errno, errbuf, sizeof(errbuf));
25 fprintf(stderr,
26 "read_statm: problem opening file %s:\n%s\n", filename, errbuf);
28 }
29
30 if (fscanf(fd,
"%80u %80u %80u", &
res.vm_pages, &
res.rss_pages, &
res.shr_pages) < 3) {
31 fprintf(stderr,
32 "read_statm: problem reading file %s:\n", filename);
33 }
34 fclose(fd);
35#else
36 int pagesize = getpagesize();
37 struct task_basic_info t_info;
38 mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT;
39 if (KERN_SUCCESS == task_info(mach_task_self(),
40 TASK_BASIC_INFO, (task_info_t)&t_info, &t_info_count)) {
41
42
43 res.vm_pages = t_info.virtual_size/pagesize;
44 res.rss_pages = t_info.resident_size/pagesize;
45 }
46#endif
48}
std::pair< std::vector< unsigned int >, bool > res