我觉得你的问题的本质在于你没搞清楚你说的系统是个什么东西……
你一直混淆了系统,操作系统,内核等等概念,所以完全就是一团浆糊。
你真想知道回调函数的调用堆栈,打个断点调试下不就知道了?
我觉得回调函数的机制很简单,但是楼主的问题则把我给搅和糊涂了。这里谈谈自己的看法。
实现回调函数的时候,就是用一个函数指针保存你待回调的函数的地址。然后满足一定的条件的时候,使用这个函数指针来调用你预设定的函数。
自己写过定时器,里面就是这样实现回调函数的。
也阅读过linux内核源码,内核中也是这样实现回调函数的。
很简单的概念啊,楼主的问题在哪里呢?
所以你说的是 GUI 中的 event-handler callback。
「回调函数是由系统调用的」—— callback 不是由系统调用的。正确的流程为:
在 callback 中加断点,用 debugger 调试,你会在 callstack 中看到从 event-loop 到你的 callback 的一系列调用。