On Wed, Jan 31, 2018 at 6:46 PM, <Mario.Limonciello@xxxxxxxx> wrote: >> > for allocation: ..._alloc_request() >> > for filling: _fill_request() / _prepare_request() >> > >> > or alike. >> > >> > _set_arguments() not good enough to me. >> >> Ok. Then we need to stick with 5 arguments... What about name >> dell_fill_request()? E.g. >> >> struct calling_interface_buffer buffer; >> dell_fill_request(&buffer, 0x2, 0, 0, 0); >> ret = dell_send_request(&buffer, CLASS_INFO, SELECT_RFKILL); >> > > The other alternative is to just define the input of the structure immediately with > an initializer, no multi argument filler function. Like this: Either would work for me, though one comment below. > - struct calling_interface_buffer buffer; > + struct calling_interface_buffer buffer = {CLASS_INFO, > + SELECT_RFKILL, > + {0, 0, 0, 0}, > + {0, 0, 0, 0}}; Looking to this approach I would rather provide a macro then. #define FILL_REQUEST(a,b,c,d,...) \ // variant FILL_RFKILL_REQUEST(a,b,c,d) (struct calling_interface_buffer) { \ ... \ } But then it is macro(s) vs. function(s) debate. > - dell_set_arguments(&buffer, 0, 0, 0, 0); > - ret = dell_send_request(&buffer, CLASS_INFO, SELECT_RFKILL); > + ret = dell_send_request(&buffer); -- With Best Regards, Andy Shevchenko