Poszukuję sposobu wywołania funkcji C w innym stosie, tj. Zapisz bieżący wskaźnik stosu, ustaw wskaźnik stosu w innym miejscu, wywołaj funkcję i przywrócić stary wskaźnik stosu, gdy wróci.Wywołanie funkcji C z innym wskaźnikiem stosu (gcc)
Celem tego jest lekki system gwintowania dla języka programowania. Wątki będą działać na bardzo małych stosach, sprawdzają, kiedy potrzeba więcej stosu i dynamicznie zmieniają jego rozmiar. Jest tak, że tysiące wątków mogą być przydzielane bez marnowania dużej ilości pamięci. Podczas wywoływania do kodu C nie jest bezpiecznie używać małego stosu, ponieważ kod C nie wie o sprawdzaniu i zmianie rozmiaru, więc chcę użyć dużego stosu pthread, który jest używany tylko do wywoływania C (dzielony między wątki lekkie na ten sam pthread).
Teraz mogę napisać kodeksy kodu montażowego, które będą działały dobrze, ale zastanawiałem się, czy istnieje lepszy sposób, aby to zrobić, takie jak rozszerzenie gcc lub biblioteka, która już je implementuje. Jeśli nie, to domyślam się, że pochylę głowę w ABI i podręcznikach asemblerowych ;-) Ja tylko pytam o to z lenistwa i nie chcę wymyślać koła.
Możesz zaimplementować własne "wątki" za pomocą zindywidualizowanych stosów za pomocą systemu klonowania. Jeśli używasz bezpośredniego wywołania systemowego zamiast pakowania libc, działa to prawie jak fork, z tym wyjątkiem, że możesz określić, które zasoby i przestrzenie nazw są współużytkowane. – technosaurus