回调函数

C 语言中的回调函数是一种函数指针,可以将其作为参数传递给另一个函数,在该函数中调用回调函数来完成特定的任务
具体来说,回调函数通常用于异步编程或事件驱动编程,以处理异步任务完成后的回调
 
简单使用demo:
#include <stdio.h>

// 回调函数类型定义
typedef void (*callback)(int);

// 调用回调函数的函数
void event_loop(callback func) {
    printf("Start event loop...\n");
    for (int i = 0; i < 5; i++) {
        // 模拟事件发生
        printf("Event %d occurred.\n", i);
        // 调用回调函数
        func(i);
    }
    printf("End event loop.\n");
}

// 回调函数实现
void callback_func(int event_id) {
    printf("Callback function called with event %d.\n", event_id);
}

int main() {
    // 将回调函数传递给 event_loop 函数
    event_loop(callback_func);

    return 0;
}

 

在驱动编程中,回调函数十分常见,如中断处理函数就是回调函数的使用之一,应用层与驱动数据交换也离不开回调,下面是一个中断处理函数的使用demo:
irqreturn_t my_interrupt_handler(int irq, void *dev_id) {
    /* 中断处理代码 */
    return IRQ_HANDLED;
}

int init_module() {
    int irq = 10; // 假设中断号是 10

    if (request_irq(irq, my_interrupt_handler, IRQF_SHARED, "my_device", &my_device)) {    // 回调函数的使用,当中断触发,回调my_interrupt_handler函数
        printk(KERN_ERR "Failed to register interrupt handler\n");
        return -EBUSY;
    }

    /* 其他初始化代码 */

    return 0;
}

void cleanup_module() {
    int irq = 10; // 假设中断号是 10

    free_irq(irq, &my_device);

    /* 其他清理代码 */
}

 

posted @ 2024-02-25 23:57  lethe1203  阅读(6)  评论(0编辑  收藏  举报