On 09/01/2012 03:35 PM, Rusty Russell wrote: > Avi Kivity <avi@xxxxxxxxxx> writes: >>> -Capability: basic >>> +Capability: KVM_CAP_REG_LIST >>> Architectures: arm >> >> all > > OK, I guess that's to be true in future. Fixed. > >>> Type: vcpu ioctl >>> -Parameters: struct kvm_msr_list (in/out) >>> +Parameters: struct kvm_reg_list (in/out) >>> Returns: 0 on success; -1 on error >>> Errors: >>> - E2BIG: the msr index list is too big to fit in the array specified by >>> - the user. >>> + E2BIG: the reg index list is too big to fit in the array specified by >>> + the user (the number required will be written into n). >>> >>> struct kvm_msr_list { >>> - __u32 nmsrs; /* number of msrs in entries */ >>> - __u32 indices[0]; >>> + __u64 n; /* number of registers in reg[] */ >>> + __u64 reg[0]; >>> }; >>> >> >> People complain that this interface is hard to use. >> >> How about supplying the address of the array (in addition to n) so you >> don't have to deal with variable sized arrays, and dropping E2BIG in >> favour of always updating n (n changed to something bigger than you had >> -> reallocate and rerun) > > We re-write n anyway, *and* return -E2BIG. Not returning an error is > asking for trouble. > > Passing an address in a struct is pretty bad, since it involves > compatibility wrappers. Right, some s390 thing. > I don't think that is what makes the API hard > to use. What is it then? I forgot what the original complaints/complainers were. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html