I think it would be nice to help prevent programmer error. The same thing was done with the protocol request structures (see all the PINT_SERVREQ_*_FILL macros used in the client sms). If you have a macro, then neglecting to pass in one of the required input fields results in a compiler error. Otherwise the compiler can't help to tell you if you have set all of the frame fields that you were supposed to set. There is no technical advantage, it just makes setting the fields a little more foolproof.

Same goes for the output of a frame after completion, although I'm not sure what the macro would look like there, or if it is possible. Probably a given frame will have several fields - some are input, some are output, some are scratch area for the state functions, etc. Someone coming along later trying to reuse the SM may not know (without some tricky code digging) which fields are the output fields that it can count on to be correctly filled in after completion. For example, maybe there is a field called "parent_handle" in there- is it filled in? If so, is it guaranteed to be filled in, or did I just happen to get it this time because of the steps path the sm took? I don't know what the best way is to make this explicit, maybe some kind of macro, maybe putting a special prefix on the names of the output fields, any other ideas? Maybe we just use comments :)

OK, I see what you mean. I think that's kind of a syntax level thing - IOW I think if affects the underlying mechanism. So yeah, we should have that and we'll work on that once the mechanism works.

Yeah, you are right- it doesn't have any impact on the underlying mechanism. Its just some extra programming practice we can try to establish later for SM users.

-Phil
_______________________________________________
Pvfs2-developers mailing list
Pvfs2-developers@beowulf-underground.org
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to