标签:
其实内核中有非常多的函数是回调函数,比如各种注册函数和初始化函数等
例如:request_irq、tasklet_init等,其实就是注册一个回调函数,然后在回调函数中一直执行所注册的句柄函数
这里是回调函数最简单的示例,内核中的很多函数基本原理类似:
linux@ubuntu:/mnt/shared/appbox/callback$ cat callback.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int handle_a(int val, char *str)
{
printf("Enter %s, val:%d!\n", str, val);
return 0;
}
int handle_b(int val, char *str)
{
printf("Enter %s, val:%d!\n", str, val);
return 0;
}
int callback(int value, int (*func)(int, char *), char *str)
{
func(value, str);
return 0;
}
int main(int argc, char *argv)
{
callback(1, handle_a, "*handle_a*");
callback(2, handle_b, "*handle_b*");
return 0;
}
linux@ubuntu:/mnt/shared/appbox/callback$
linux@ubuntu:/mnt/shared/appbox/callback$ ./callback Enter *handle_a*, val:1! Enter *handle_b*, val:2! linux@ubuntu:/mnt/shared/appbox/callback$
标签:
原文地址:http://blog.csdn.net/xiangpingli/article/details/42130989