linux - list_for_each_entry reset cursor -
hi new in , trying use list_for_each_entry iterate on list. looks this
list_for_each_entry(pos, head, member){ if (something == pos.x) //reset loop cursor starts iterating on again }
how perform commented part without using goto? 1 more thing, safe use break/continue inside list_for_each_entry or there functions available achieve this?
thanks.
look @ definition of list_for_each_entry
#define list_for_each_entry(pos, head, member) \ (pos = list_entry((head)->next, typeof(*pos), member); \ &pos->member != (head); \ pos = list_entry(pos->member.next, typeof(*pos), member))
as see defined simple loop, no black magic here, can use continue/break.
for other question, guess depends how why you're trying that. simplest way do:
int iterateagain = 0; list_for_each_entry(pos, head, member) { // (...) if (something == pos.x) { iterateagain = 1; break; } } if (iterateagain) { list_for_each_entry(pos, head, member) { // (...) } }
but depending on code, might redundant etc. have recursive function too. there many ways of doing this.
edit after comment:
int keepiterating; { keepiterating = 0; list_for_each_entry(pos, head, member) { // (...) if (something == pos.x) { keepiterating = 1; break; } } } while (keepiterating);
Comments
Post a Comment