On 10/04/2012 04:05 PM, Anthony Liguori wrote: > Avi Kivity <a...@redhat.com> writes: > >> Many listeners don't need to respond to all MemoryListener callbacks; >> provide suitable defaults instead. >>
>> +#define MEMORY_LISTENER_DEFAULT_OPS \ >> + .begin = memory_listener_default_global, \ >> + .commit = memory_listener_default_global, \ >> + .region_add = memory_listener_default_section, \ >> + .region_del = memory_listener_default_section, \ >> + .region_nop = memory_listener_default_section, \ >> + .log_start = memory_listener_default_section, \ >> + .log_stop = memory_listener_default_section, \ >> + .log_sync = memory_listener_default_section, \ >> + .log_global_start = memory_listener_default_global, \ >> + .log_global_stop = memory_listener_default_global, \ >> + .eventfd_add = memory_listener_default_eventfd, \ >> + .eventfd_del = memory_listener_default_eventfd \ >> + >> +void memory_listener_default_global(MemoryListener *listener); >> +void memory_listener_default_section(MemoryListener *listener, >> + MemoryRegionSection *section); >> +void memory_listener_default_eventfd(MemoryListener *listener, >> + MemoryRegionSection *section, >> + bool match_data, uint64_t data, >> EventNotifier *e); >> + >> /** >> * memory_region_init: Initialize a memory region >> * > > I think it'd be nicer to check for NULL when invoking the functions in > the memory core. > > Then you avoid the exported stub functions entirely. Yes, that's the common style, but I happen not to like the extra check, both from a performance point of view (doesn't apply here of course) and from a readability point of view. -- error compiling committee.c: too many arguments to function