Home | History | Annotate | Download | only in oslib

Lines Matching refs:pi

72 static int proc_parse_start(struct proc_parse_info *pi)
80 pi->buf = xmalloc(PROC_MTD_MAX_LEN);
82 ret = read(fd, pi->buf, PROC_MTD_MAX_LEN);
89 memcmp(pi->buf, PROC_MTD_FIRST, PROC_MTD_FIRST_LEN)) {
95 pi->data_size = ret;
96 pi->next = pi->buf + PROC_MTD_FIRST_LEN;
102 free(pi->buf);
107 static int proc_parse_next(struct proc_parse_info *pi)
109 int ret, len, pos = pi->next - pi->buf;
112 if (pos >= pi->data_size) {
113 free(pi->buf);
117 ret = sscanf(pi->next, PROC_MTD_PATT, &pi->mtd_num, &pi->size,
118 &pi->eb_size);
122 p = memchr(pi->next, '\"', pi->data_size - pos);
126 pos = p - pi->buf;
127 if (pos >= pi->data_size)
130 p1 = memchr(p, '\"', pi->data_size - pos);
133 pos = p1 - pi->buf;
134 if (pos >= pi->data_size)
139 return errmsg("too long mtd%d device name", pi->mtd_num);
141 memcpy(pi->name, p, len);
142 pi->name[len] = '\0';
146 pi->next = p1 + 2;
185 struct proc_parse_info pi;
187 ret = proc_parse_start(&pi);
191 while (proc_parse_next(&pi)) {
192 if (pi.mtd_num == mtd_num)
208 struct proc_parse_info pi;
210 ret = proc_parse_start(&pi);
215 while (proc_parse_next(&pi)) {
217 if (pi.mtd_num > info->highest_mtd_num)
218 info->highest_mtd_num = pi.mtd_num;
219 if (pi.mtd_num < info->lowest_mtd_num)
220 info->lowest_mtd_num = pi.mtd_num;
240 struct proc_parse_info pi;
350 ret = proc_parse_start(&pi);
354 while (proc_parse_next(&pi)) {
355 if (pi.mtd_num == mtd->mtd_num) {
356 strcpy((char *)mtd->name, pi.name);