Lines Matching defs:proc

28 static int read_maps(pm_process_t *proc);
33 pm_process_t *proc;
40 proc = calloc(1, sizeof(*proc));
41 if (!proc)
44 proc->ker = ker;
45 proc->pid = pid;
47 error = snprintf(filename, MAX_FILENAME, "/proc/%d/pagemap", pid);
50 free(proc);
54 proc->pagemap_fd = open(filename, O_RDONLY);
55 if (proc->pagemap_fd < 0) {
57 free(proc);
61 error = read_maps(proc);
63 free(proc);
67 *proc_out = proc;
72 int pm_process_usage(pm_process_t *proc, pm_memusage_t *usage_out) {
77 if (!proc || !usage_out)
82 for (i = 0; i < proc->num_maps; i++) {
83 error = pm_map_usage(proc->maps[i], &map_usage);
94 int pm_process_pagemap_range(pm_process_t *proc,
102 if (!proc || (low >= high) || !range_out || !len)
105 firstpage = low / proc->ker->pagesize;
106 numpages = (high - low) / proc->ker->pagesize;
112 off = lseek(proc->pagemap_fd, firstpage * sizeof(uint64_t), SEEK_SET);
118 error = read(proc->pagemap_fd, (char*)range, numpages * sizeof(uint64_t));
137 int pm_process_maps(pm_process_t *proc, pm_map_t ***maps_out, size_t *len) {
140 if (!proc || !maps_out || !len)
143 if (proc->num_maps) {
144 maps = malloc(proc->num_maps * sizeof(pm_map_t*));
148 memcpy(maps, proc->maps, proc->num_maps * sizeof(pm_map_t*));
154 *len = proc->num_maps;
159 int pm_process_workingset(pm_process_t *proc,
167 if (!proc)
172 for (i = 0; i < proc->num_maps; i++) {
173 error = pm_map_workingset(proc->maps[i], &map_ws);
183 error = snprintf(filename, MAX_FILENAME, "/proc/%d/clear_refs",
184 proc->pid);
201 int pm_process_destroy(pm_process_t *proc) {
202 if (!proc)
205 free(proc->maps);
206 close(proc->pagemap_fd);
207 free(proc);
223 static int read_maps(pm_process_t *proc) {
231 if (!proc)
239 error = snprintf(filename, MAX_FILENAME, "/proc/%d/maps", proc->pid);
262 map->proc = proc;
292 proc->maps = new_maps;
293 proc->num_maps = maps_count;