+def IterateSListEntry(element, element_type, field_name, slist_prefix=''):
+ """ iterate over a list as defined with SLIST_HEAD in bsd/sys/queue.h
+ params:
+ element - value : Value object for slh_first
+ element_type - str : Type of the next element
+ field_name - str : Name of the field in next element's structure
+ returns:
+ A generator does not return. It is used for iterating
+ value : an object thats of type (element_type) head->sle_next. Always a pointer object
+ """
+ elt = element.__getattr__(slist_prefix + 'slh_first')
+ if type(element_type) == str:
+ element_type = gettype(element_type)
+ while unsigned(elt) != 0:
+ yield elt
+ next_el = elt.__getattr__(field_name).__getattr__(slist_prefix + 'sle_next')
+ elt = cast(next_el, element_type)
+
+def IterateListEntry(element, element_type, field_name, list_prefix=''):