I am struggling with the definition of an upcall. Presumably, an upcall is a mechanism that allows the kernel to execute a function in userspace. By this definition, an invocation of a signal handler is an upcall because the handler runs in userspace and it is executed by the kernel. However, I noticed that upcalls are sometimes counterposed to signal handlers, without any reasonable explanations. So, is signal handler invocation an upcall, and if not, why?