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)) 

from https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/list.h?id=refs/tags/v3.10-rc2#n418

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

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

java - Using an Integer ArrayList in Android -