LINUX.ORG.RU

История изменений

Исправление MKuznetsov, (текущая версия) :

копать в стороны:

  • mmap (выделять/ресайзить память с нужными аттрибутами),

  • всё про сигналы,

  • немного ассемблера или man clone или longjmp для работы в новом стеке

  • и про устройство С :-) чтобы изначально правильно всё положить в новый стек (параметры,возвраты)

собственно получится что запускаете full-stack корутину и ловите сигналы о срывах. Возможно есть готовые рецепты/библиотеки, корутины популярны. Фантастики нет, просто очень кропотливо

PS/ Чтобы стек можно было увеличивать вручную, придётся ещё обеспокоится о выравниваниях. И упороться в анализе причин

Исправление MKuznetsov, :

копать в стороны:

  • mmap (выделять/ресайзить память с нужными аттрибутами),

  • всё про сигналы,

  • немного ассемблера или man clone или longjmp для работы в новом стеке

  • и про устройство С :-) чтобы изначально правильно всё положить в новый стек (параметры,возвраты)

собственно получится что запускаете full-stack корутину и ловите сигналы о срывах. Возможно есть готовые рецепты/библиотеки, корутины популярны. Фантастики нет, просто очень кропотливо

PS/ Чтобы стек можно было увеличивать вручную придётся ещё обеспокоится о выравниваниях. И упороться в анализе причин

Исходная версия MKuznetsov, :

копать в стороны:

  • mmap (выделять/ресайзить память с нужными аттрибутами),

  • всё про сигналы,

  • немного ассемблера или man clone или longjmp для работы в новом стеке

  • и про устройство С :-) чтобы изначально правильно всё положить в новый стек (параметры,возвраты)

собственно получится что запускаете full-stack корутину и ловите сигналы о срывах. Возможно есть готовые рецепты/библиотеки, корутины популярны.

PS/ Чтобы стек можно было увеличивать вручную придётся ещё обеспокоится о выравниваниях. И упороться в анализе причин