be used concurrently. pass the function in eax instead; this gets rid of the global variable. also execute the function directly if we're already trapped into the kernel. revert of u32_t endpoint_t to int (some code assumes endpoints are negative for negative slot numbers).