and callbacks in ccsm that essentially mimic gs_exit hook functionality:
#ifdef ccsm
ccsm_exit()
#else
#ifdef GS
gs_exit()
#endif
#endif
# missing relationship between sets and multiple owners of that set
- should be able to step back from a given set to all sets of which it is a member
get_flag:
flags = get_flags(s);
one_flag &= flags & ONE_FLAG_MASK;
ex of unsetting a flag:
foo = get_flags(s)
foo &= (~flag)
set_flags(s, foo)
ex of setting a flag:
foo = get_flags(s)
foo |= flag
set_flags(s, foo)
ex of iterator which applies an action ‘a’ if a function ‘f’ evaluates to true for each member of a set, i.e.: for all sets x of which y is a member, do z:
forall(*f, *void extra_data_f, size_f, *a, *void extra_data_a, size_t size_a) {
list_for_each_entry(member, &list_of_all_ccsm_sets, list_head) {
if f ( member, extra_data_f, size_f ) {
a ( member, extra_data_a, size_a )
}
}
}
we need to be able to cancel the callbacks individually, this implies that registration of a callback should return a callback handle to the registrant who would then use the handle to cancel the callback as desired