Lines Matching defs:dirp
53 telldir(DIR *dirp)
59 _pthread_mutex_lock(&dirp->dd_lock);
66 if (dirp->dd_seek < (1ul << DD_SEEK_BITS) &&
67 dirp->dd_loc < (1ul << DD_LOC_BITS)) {
69 ddloc.s.loc = dirp->dd_loc;
70 ddloc.s.seek = dirp->dd_seek;
75 LIST_FOREACH(lp, &dirp->dd_td->td_locq, loc_lqe) {
76 if (lp->loc_seek == dirp->dd_seek) {
79 if (lp->loc_loc == dirp->dd_loc)
90 _pthread_mutex_unlock(&dirp->dd_lock);
93 lp->loc_index = dirp->dd_td->td_loccnt++;
94 lp->loc_seek = dirp->dd_seek;
95 lp->loc_loc = dirp->dd_loc;
99 LIST_INSERT_HEAD(&dirp->dd_td->td_locq, lp, loc_lqe);
110 _pthread_mutex_unlock(&dirp->dd_lock);
119 _seekdir(DIR *dirp, long loc)
133 LIST_FOREACH(lp, &dirp->dd_td->td_locq, loc_lqe) {
143 if (loc_loc == dirp->dd_loc && loc_seek == dirp->dd_seek)
147 if (loc_seek == dirp->dd_seek) {
153 dirp->dd_flags |= __DTF_SKIPREAD;
154 dirp->dd_loc = loc_loc;
157 (void) lseek(dirp->dd_fd, (off_t)loc_seek, SEEK_SET);
158 dirp->dd_seek = loc_seek;
159 dirp->dd_loc = 0;
160 dirp->dd_flags &= ~__DTF_SKIPREAD; /* current contents are invalid */
161 while (dirp->dd_loc < loc_loc) {
162 dp = _readdir_unlocked(dirp, 0);
178 _fixtelldir(DIR *dirp, long oldseek, long oldloc)
182 lp = LIST_FIRST(&dirp->dd_td->td_locq);
186 lp->loc_seek = dirp->dd_seek;
187 lp->loc_loc = dirp->dd_loc;
196 _reclaim_telldir(DIR *dirp)
201 lp = LIST_FIRST(&dirp->dd_td->td_locq);
207 LIST_INIT(&dirp->dd_td->td_locq);