История изменений
Исправление MKuznetsov, (текущая версия) :
копать в стороны:
-
mmap (выделять/ресайзить память с нужными аттрибутами),
-
всё про сигналы,
-
немного ассемблера или man clone или longjmp для работы в новом стеке
-
и про устройство С :-) чтобы изначально правильно всё положить в новый стек (параметры,возвраты)
собственно получится что запускаете full-stack корутину и ловите сигналы о срывах. Возможно есть готовые рецепты/библиотеки, корутины популярны. Фантастики нет, просто очень кропотливо
PS/ Чтобы стек можно было увеличивать вручную, придётся ещё обеспокоится о выравниваниях. И упороться в анализе причин
Исправление MKuznetsov, :
копать в стороны:
-
mmap (выделять/ресайзить память с нужными аттрибутами),
-
всё про сигналы,
-
немного ассемблера или man clone или longjmp для работы в новом стеке
-
и про устройство С :-) чтобы изначально правильно всё положить в новый стек (параметры,возвраты)
собственно получится что запускаете full-stack корутину и ловите сигналы о срывах. Возможно есть готовые рецепты/библиотеки, корутины популярны. Фантастики нет, просто очень кропотливо
PS/ Чтобы стек можно было увеличивать вручную придётся ещё обеспокоится о выравниваниях. И упороться в анализе причин
Исходная версия MKuznetsov, :
копать в стороны:
-
mmap (выделять/ресайзить память с нужными аттрибутами),
-
всё про сигналы,
-
немного ассемблера или man clone или longjmp для работы в новом стеке
-
и про устройство С :-) чтобы изначально правильно всё положить в новый стек (параметры,возвраты)
собственно получится что запускаете full-stack корутину и ловите сигналы о срывах. Возможно есть готовые рецепты/библиотеки, корутины популярны.
PS/ Чтобы стек можно было увеличивать вручную придётся ещё обеспокоится о выравниваниях. И упороться в анализе причин