Notifiers are data-less callbacks and a notifier list is a list of registered notifiers that all are interested in a particular event. We'll use this in a few patches to implement mouse change notification. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> --- v1 -> v2 - Do not do memory allocations by placing list nodes in notifier
		
			
				
	
	
		
			44 lines
		
	
	
		
			857 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			857 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Notifier lists
 | 
						|
 *
 | 
						|
 * Copyright IBM, Corp. 2010
 | 
						|
 *
 | 
						|
 * Authors:
 | 
						|
 *  Anthony Liguori   <aliguori@us.ibm.com>
 | 
						|
 *
 | 
						|
 * This work is licensed under the terms of the GNU GPL, version 2.  See
 | 
						|
 * the COPYING file in the top-level directory.
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef QEMU_NOTIFY_H
 | 
						|
#define QEMU_NOTIFY_H
 | 
						|
 | 
						|
#include "qemu-queue.h"
 | 
						|
 | 
						|
typedef struct Notifier Notifier;
 | 
						|
 | 
						|
struct Notifier
 | 
						|
{
 | 
						|
    void (*notify)(Notifier *notifier);
 | 
						|
    QTAILQ_ENTRY(Notifier) node;
 | 
						|
};
 | 
						|
 | 
						|
typedef struct NotifierList
 | 
						|
{
 | 
						|
    QTAILQ_HEAD(, Notifier) notifiers;
 | 
						|
} NotifierList;
 | 
						|
 | 
						|
#define NOTIFIER_LIST_INITIALIZER(head) \
 | 
						|
    { QTAILQ_HEAD_INITIALIZER((head).notifiers) }
 | 
						|
 | 
						|
void notifier_list_init(NotifierList *list);
 | 
						|
 | 
						|
void notifier_list_add(NotifierList *list, Notifier *notifier);
 | 
						|
 | 
						|
void notifier_list_remove(NotifierList *list, Notifier *notifier);
 | 
						|
 | 
						|
void notifier_list_notify(NotifierList *list);
 | 
						|
 | 
						|
#endif
 |