Rusty Russell wrote: > Well, I was thinking about this, and maybe it's better for the overrides > to do explicit assignments in their probe fn, ie: > > paravirt_ops.irq_disable = my_irq_disable; > paravirt_ops.irq_enable = my_irq_enable; > paravirt_ops.cpuid = my_cpuid; > ... > > This makes partial overrides (eg Xen) really clear, is no more lines of > code that the modern struct init style, and avoids making the native > ones nonstatic... > I still like the extra information that: .clts = native_clts, tells the reader. It says "I am explicitly choosing to use the native version for the operation", vs having nothing which means "I'm implicitly falling back on the default, or maybe I forgot to implement it". The implicit default fallbacks make sense for an interface which has been stable, has users, and is then updated in a way which makes sure that the old users of the interface can do nothing and still have a working system. But at this stage of paravirt_ops, not implementing something almost certainly means that someone updated the interface, and that its probably not OK to not implement that update. J