xref: /linux/drivers/video/fbdev/core/fb_notify.c (revision a36e9f5cfe9eb3a1dce8769c7058251c42705357)
1 /*
2  *  linux/drivers/video/fb_notify.c
3  *
4  *  Copyright (C) 2006 Antonino Daplas <adaplas@pol.net>
5  *
6  *	2001 - Documented with DocBook
7  *	- Brad Douglas <brad@neruo.com>
8  *
9  * This file is subject to the terms and conditions of the GNU General Public
10  * License.  See the file COPYING in the main directory of this archive
11  * for more details.
12  */
13 #include <linux/fb.h>
14 #include <linux/notifier.h>
15 #include <linux/export.h>
16 
17 static BLOCKING_NOTIFIER_HEAD(fb_notifier_list);
18 
19 /**
20  *	fb_register_client - register a client notifier
21  *	@nb: notifier block to callback on events
22  *
23  *	Return: 0 on success, negative error code on failure.
24  */
25 int fb_register_client(struct notifier_block *nb)
26 {
27 	return blocking_notifier_chain_register(&fb_notifier_list, nb);
28 }
29 EXPORT_SYMBOL(fb_register_client);
30 
31 /**
32  *	fb_unregister_client - unregister a client notifier
33  *	@nb: notifier block to callback on events
34  *
35  *	Return: 0 on success, negative error code on failure.
36  */
37 int fb_unregister_client(struct notifier_block *nb)
38 {
39 	return blocking_notifier_chain_unregister(&fb_notifier_list, nb);
40 }
41 EXPORT_SYMBOL(fb_unregister_client);
42 
43 /**
44  * fb_notifier_call_chain - notify clients of fb_events
45  * @val: value passed to callback
46  * @v: pointer passed to callback
47  *
48  * Return: The return value of the last notifier function
49  */
50 int fb_notifier_call_chain(unsigned long val, void *v)
51 {
52 	return blocking_notifier_call_chain(&fb_notifier_list, val, v);
53 }
54 EXPORT_SYMBOL_GPL(fb_notifier_call_chain);
55