Lines Matching defs:mi
66 maps_init (struct map_iterator *mi, pid_t pid)
75 mi->fd = open (path, O_RDONLY);
76 if (mi->fd >= 0)
79 mi->buf_size = getpagesize ();
80 cp = mmap (NULL, mi->buf_size, PROT_READ | PROT_WRITE,
84 close(mi->fd);
85 mi->fd = -1;
90 mi->offset = 0;
91 mi->buf = mi->buf_end = cp + mi->buf_size;
203 maps_next (struct map_iterator *mi,
211 if (mi->fd < 0)
216 ssize_t bytes_left = mi->buf_end - mi->buf;
221 if (mi->buf[i] == '\n')
223 eol = mi->buf + i;
226 else if (mi->buf[i] == '\0')
233 memmove (mi->buf_end - mi->buf_size, mi->buf, bytes_left);
235 mi->buf = mi->buf_end - mi->buf_size;
236 nread = read (mi->fd, mi->buf + bytes_left,
237 mi->buf_size - bytes_left);
240 else if ((size_t) (nread + bytes_left) < mi->buf_size)
244 mi->buf and mi->buf_end are valid. */
245 memmove (mi->buf_end - nread - bytes_left, mi->buf,
247 mi->buf = mi->buf_end - nread - bytes_left;
250 eol = mi->buf + bytes_left + nread - 1;
253 if (mi->buf[i] == '\n')
255 eol = mi->buf + i;
259 cp = mi->buf;
260 mi->buf = eol + 1;
273 cp = mi->path = skip_whitespace (cp);
301 maps_close (struct map_iterator *mi)
303 if (mi->fd < 0)
305 close (mi->fd);
306 mi->fd = -1;
307 if (mi->buf)
309 munmap (mi->buf_end - mi->buf_size, mi->buf_size);
310 mi->buf = mi->buf_end = NULL;