fiber: introduce fiber.f_arg
Struct fiber has a member va_list f_data. It is used to forward arguments to the fiber function when fiber_start() is called, right from the caller's stack. But it is useless when fiber is started asynchronously, with fiber_new + fiber_wakeup. And there is no way to pass anything into such a fiber. This patch adds a new member 'void *f_arg', which shares memory with va_list f_data, and can be used to pass something into the fiber. The feature is going to be used by raft. Currently raft worker fiber works only with global variables, but soon it will need to have its own pointer at struct raft object. And it can't be started with fiber_start(), because raft code does not yield anywhere in its state machine. Needed for #5303
Loading
Please register or sign in to comment