[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 28/28] libxl: ocaml: provide default records for libxl types
> On Mon, 2013-03-25 at 14:45 +0000, Rob Hoes wrote: > > Libxl functions such as libxl_domain_create_new take large structs of > > configuration parameters. Often, we would like to use the default > > values for many of these parameters. > > > > This commit makes OCaml records of defaults available for all libxl > > struct and keyed-union types, which can be used as a base to construct > > your own records, and to selectively override parameters where needed. > > > > For example, a Domain_create_info record can now be created as follows: > > > > let c_info = Xenlight.Domain_create_info.({ default with > > ty = Xenlight.DOMAIN_TYPE_PV; > > name = Some vm_name; > > uuid = vm_uuid; > > }) in > > This is a clever approach (and I expect good idiomatic ocaml?) but you need > to handle the init_val IDL field for all types since not everything should be > set to zero (e.g. some of the UInt subtypes don't default to 0, see MemKB > for one). > > I wonder if a better alternative might be to use a C binding to call > libxl_TYPE_init() and convert that to an ocaml value? This would mean one > less place to change in the future as well. I see. In that case, it indeed seems better to turn "default" into a function that calls a libxl *_init() function and converts it to an ocaml value, rather than having static defaults. With that, the only thing that changes in the example above is that "()" is added after "default". Cheers, Rob _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |